的Python 3.X - 映射字典,多个元组作为键
问题描述:
我有一个包含多个元组作为键的字典:的Python 3.X - 映射字典,多个元组作为键
dictionary = {('Paris', 'Monaco', 'Marseille'): 'France',
('Milan', 'Juventus', 'Roma'): 'Italy',
('Manchester', 'Liverpool', 'London'): 'England'}
如何与很多城市名称的映射列表上面的词典:
lst = ['Paris','Paris','Monaco','Milan','London',...]
我已经试过这样:
countries = []
for k,v in dictionary.items():
for each in lst:
if each in k:
countries.append(v)
结果:它不是分配城市字典一个接一个,而不是利刺所有键多次
所需的输出:
lst countries
Paris France
Paris France
Monaco France
Milan Italy
London England
... ...
任何想法?
答
我建议你扁平字典键。整个键复制值不是一个问题:
dictionary = {k: v for tup, v in dictionary.items() for k in tup}
然后使用新的字典容易建立您的清单:
countries = [dictionary[city] for city in lst]
您可以通过侧像这样符合城市和乡村:
for city, country in zip(lst, countries):
print(city, country)
或者没有建立新的countries
列表,您可以直接使用新的字典:
for city in lst:
print(city, dictionary[city])
+0
它的工作原理,我认为缺少的链接是我不知道如何压扁字典键。谢谢。 –
为什么你的字典中有这种格式?为什么不让城市**分开**键和重复值? –
假设我在我的字典中有很多键和值,并且很难使用重复值来创建单独的键 –
使用单独的键创建新字典非常困难。如果你有很多键和值,那么*更重要的是*你避免必须一直循环所有的键。 –