0

在下面的字典中,我想检查 aa 中的值是否与 bb 中的值匹配,并生成 aa 的键到 bb 的键的映射。我需要重新排列字典吗?我从制表符分隔的文件中导入数据,所以我没有附加到字典。请注意,aa 大约是 bb 的 100 倍(aa 为 100k 行),但这是不经常离线运行的。

输入:

aa = {1: 'a', 3: 'c', 2 : 'b', 4 : 'd'}
bb = {'apple': 'a', 'pear': 'b', 'mango' : 'g'}

所需的输出(或任何类似的数据结构):

dd = {1 : 'apple', 2 : 'pear'}
4

2 回答 2

3
aa = {1:'a', 3:'c', 2:'b', 4:'d'}
bb = {'apple':'a', 'pear':'b', 'mango': 'g'}

bb_rev = dict((value, key)
    for key, value in bb.iteritems()) # bb.items() in python3
dd = dict((key, bb_rev[value])
    for key, value in aa.iteritems() # aa.items() in python3
    if value in bb_rev)

print dd
于 2012-06-06T06:58:09.357 回答
0

你可以这样做:

>>> aa = {1: 'a', 3: 'c', 2 : 'b', 4 : 'd'}
>>> bb = {'apple': 'a', 'pear': 'b', 'mango' : 'g'}
>>> tmp = {v: k for k, v in bb.iteritems()}
>>> dd = {k: tmp[v] for k, v in aa.iteritems() if v in tmp} 
 >>> dd
{1: 'apple', 2: 'pear'}

但请注意,这只有在字典的每个值都作为aa字典的值出现 bb一次或根本不出现时才有效。

于 2012-06-06T06:54:30.733 回答