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]  

但这似乎不起作用。有没有办法在这样的元组中标记项目?提前致谢!

4

3 回答 3

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 个的元组。

于 2013-07-17T22:19:12.670 回答
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')
于 2013-07-17T22:27:43.580 回答
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'])
于 2013-07-17T22:20:14.713 回答