2017-02-17 212 views
2

說你這兩個字典工作:Python:如何將字典的鍵映射到另一個字典的值?

a={(1,2):1.8,(2,3):2.5,(3,4):3.9} #format -> {(x,y):value} 
b={10:(1,2),20:(2,3),30:(3,4)} #format -> {id:(x,y)} 

,並要拿出具有以下格式的詞典:{id:value}。在這個例子中,結果將是:

c={10:1.8,20:2.5,30:3.9} 

我曾嘗試以下

c={k:j for k in b.keys() and j in a.values()} 

但結果是顯然微不足道

NameError: name 'j' is not defined 

什麼是這樣做的最佳方法是什麼?你如何「建模」通信?

回答

2

b進行迭代似乎就足夠了 - 爲什麼不直接使用字典的自然對應關係。

>>> {k: a[v] for k, v in b.items()} 
{10: 1.8, 20: 2.5, 30: 3.9} 

在你的想法正確的語法嘗試將像

>>> {k:j for k, j in zip(b.keys(),a.values())} 
{10: 1.8, 20: 3.9, 30: 2.5} 

但是你可以看到,這並不反正工作。這是因爲詞典當然是無序的,所以一個詞典的鍵和另一個詞的鍵之間沒有強制關係。

相關問題