Python 命名列表中作为字典值的每个项目

Python 命名列表中作为字典值的每个项目,python,Python,我有一个字典,其中键是普通字符串,值是元组,其示例如下所示: 'Europe':(Germany, France, Italy) 'Asia':(India, China, Malaysia) 我想显示如下所示的字典项: 'Europe':(RandomStringA:Germany, RandomStringB:France, RandomStringC:Italy) 'Asia':(RandomStringA:India, RandomStringB:China, RandomSt

我有一个字典,其中键是普通字符串,值是元组,其示例如下所示:

'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'}
但不能执行
打印'a':'b'
。另外,您不应该使用
dict
作为变量名,因为它是一个关键字

我的解决方案也适用于包含多于(甚至少于)3个元素的元组

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)
欧洲:('Country1:德国'、'Country2:法国'、'Country3:意大利')
亚洲:(‘国家一:印度’、‘国家二:中国’、‘国家三:马来西亚’)

请使用实际的Python来显示您的数据结构-您当前的示例没有意义。您说值是一个列表,但您将值显示为元组。这是哪一个?@roippi编辑了这篇博文。为什么这篇好听的文章会说
RandomStringA
等等?抱歉,您的更新没有澄清问题。
“RadomStringX”
代表什么?聪明的lambda。。。有那么一秒钟,我以为你忘了一场争论。可以写成
lambda(i,c):'Country%d:%s'%i,c
对吗?@2rs2ts:是的,那也行,而且更明确。说得好。我很抱歉给你带来了困惑。我重新编辑了这篇文章。我很抱歉造成混乱。我又编辑了这篇文章。@JustinCarrey你得详细说明一下什么是
“RandomStringA”
<代码>“随机字符串B”等。平均值。您想用什么来代替
“国家”
?你想按字母顺序而不是数字顺序数数吗?