簡體   English   中英

命名列表中的每一項都是字典的值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM