2017-10-16 126 views
-1

我有一個包含多個元組作爲鍵的字典:的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 
...   ... 

任何想法?

+0

爲什麼你的字典中有這種格式?爲什麼不讓城市**分開**鍵和重複值? –

+0

假設我在我的字典中有很多鍵和值,並且很難使用重複值來創建單獨的鍵 –

+0

使用單獨的鍵創建新字典非常困難。如果你有很多鍵和值,那麼*更重要的是*你避免必須一直循環所有的鍵。 –

回答

1

我建議你扁平字典鍵。整個鍵複製值不是一個問題:

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

它的工作原理,我認爲缺少的鏈接是我不知道如何壓扁字典鍵。謝謝。 –