[英]Naming each item in a list which is a value of a dictionary
我有一本字典,其鍵為普通字符串,值為元組,其示例如下所示:
'Europe':(Germany, France, Italy)
'Asia':(India, China, Malaysia)
我想顯示這樣的字典項目:
'Europe':(RandomStringA:Germany, RandomStringB:France, RandomStringC:Italy)
'Asia':(RandomStringA:India, RandomStringB:China, RandomStringC:Malaysia)
我嘗試了下面的代碼:
for k, v in dict.iteritems()
print k, "Country1":v[0], "Country2":v[1], "Country3":v[2]
但這似乎不起作用。 有沒有辦法像這樣在元組中標記項目? 提前致謝!
如果您只是嘗試打印:
for k, v in dct.iteritems():
print repr(k)+ ":(" + ", ".join("Country{}:{}".format(i,c) for i,c in enumerate(v, start=1)) + ")"
輸出:
'Europe':(Country1:Germany, Country2:France, Country3:Italy)
'Asia':(Country1:India, Country2:China, Country3:Malaysia)
注意:我正在濫用repr()
函數以獲取引號。 您也可以執行"'" + str(k) + "'"
。
代碼不起作用的原因是在字典初始化或理解之外使用了:
。 也就是說,您可以執行d = {'a':'b'}
但不能print 'a':'b'
。 另外,不應將dict
用作變量名,因為它是關鍵字。
我的解決方案也適用於其中包含三個(或更少)三個元素的元組。
mainDict = {"Europe": ("Germany", "France", "Italy"),
"Asia": ("India", "China", "Malaysia")
}
for item in mainDict:
print "%s:(%s)" % (item, ", ".join(["Country%s:%s" % (r+1, y) for r, y in enumerate(mainDict[item])]))
打印:
Europe:(['Country1:Germany', 'Country2:France', 'Country3:Italy'])
Asia:(['Country1:India', 'Country2:China', 'Country3:Malaysia'])
我不知道有什么內置函數可以做到,但是要做您想要的事情很簡單:
countries = {
'Europe': ('Germany', 'France', 'Italy'),
'Asia': ('India', 'China', 'Malaysia'),
}
for k, v in countries.iteritems():
print k+':', tuple(map(lambda c: 'Country%d:%s' % c, enumerate(v, start=1)))
輸出:
Europe: ('Country1:Germany', 'Country2:France', 'Country3:Italy')
Asia: ('Country1:India', 'Country2:China', 'Country3:Malaysia')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.