2013-07-17 18 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

我非常非常抱歉的困惑。我再次编辑帖子。 –

相关问题