Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:如何将一个字典的键映射到另一个字典的值?_Python_Dictionary_Key_Key Value - Fatal编程技术网

Python:如何将一个字典的键映射到另一个字典的值?

Python:如何将一个字典的键映射到另一个字典的值?,python,dictionary,key,key-value,Python,Dictionary,Key,Key Value,假设您正在使用这两本词典: 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()

假设您正在使用这两本词典:

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

最好的方法是什么?您如何“建模”对应关系?

b
上迭代似乎就足够了-为什么不直接使用dict的自然对应关系呢

>>> {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}

然而,正如你所看到的,这无论如何都不起作用。这是因为dict当然是无序的,因此在一个dict的键和另一个dict的值之间没有强制关系

属性错误:“str”对象没有属性“值”@AkshatZala那么
a
在您的案例中是一个字符串。确定必须重新检查