2013-07-17 17 views
0

我有一個字典哪個鍵是一個正常的字符串和值是用於該實施例在以下所示的元組:命名其爲一個字典的值列表中的每個項

'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] 

但這似乎不是T工作。有沒有一種方法來標記元組中的項目?提前致謝!

+0

請使用實際的Python來顯示您的數據結構 - 你目前的例子沒有意義。 –

+0

你說價值是一個列表,但你顯示值爲一個元組。這是什麼? – roippi

+0

@roippi編輯帖子 –

回答

1

如果你只是想打印:

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作爲變量名稱,因爲它是一個關鍵字。

我的解決方案將適用於其中有更多(甚至更少)3個元素的元組。

+0

我對此非常抱歉,我再次編輯了這篇文章。 –

+0

@JustinCarrey您將不得不詳細說明''RandomStringA''。 ''「RandomStringB」'等意思,你想要什麼來代替「國家」嗎?你想按字母順序排列,而不是數字排列嗎? – 2rs2ts

0
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']) 
0

沒有什麼內置的,我知道這將做到這一點,但它是很簡單的事你想要什麼:

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') 
+0

聰明的lambda ...一秒鐘,我以爲你已經忘記了這可以寫成lambda(i,c):'Country%d:%s'%i,c' right?(僅供我澄清) – 2rs2ts

+0

@ 2rs2ts:是的, k也是如此,並且更加明確。好點子。 – martineau

+0

我非常非常抱歉的困惑。我再次編輯帖子。 –

相關問題