Python: 如何将字典的键映射到另一个字典的值?
Python: how to map the keys of a dictionary onto the values of another?
假设您正在使用这两个词典:
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
执行此操作的最佳方法是什么?你是怎么"model"通信的?
迭代 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}
但是如您所见,这无论如何都行不通。这是因为字典当然是无序的,因此一个字典的键和另一个字典的值之间没有强制关系。
假设您正在使用这两个词典:
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
执行此操作的最佳方法是什么?你是怎么"model"通信的?
迭代 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}
但是如您所见,这无论如何都行不通。这是因为字典当然是无序的,因此一个字典的键和另一个字典的值之间没有强制关系。