我有两个字典: 词典A具有递增且唯一的项ID作为关键字,并且与FID值关联。
词典B具有FID标识符作为键,而Dict B的值是每个FID的关联值
dict_a = {11111: FID01, 22222: FID01, 33333:FID03, 44444: FID01}
dict_b = {FID01: 25, FID02: 50, FID03: 75, FID04: 90}
我希望做的是得到一本字典,字典的Dict A键直接对应于Dict B中的正确值
所以我理想的字典C是:
dict_c = {11111: 25, 22222: 25, 33333: 75, 44444: 25}
并非dict_b的每个键都将用作dict_a的值,但是dict_a的每个键都需要转移到dict_c并与dict_b中的正确值相对应。
我需要使用Python 2.7,因为此程序将在政府计算机上使用,并且我不能简单地下载Python 3+,因此,使用python 2.7内置的任何解决方案都是理想的选择。
我试图根据字典创建一个列表,并尝试根据这些列表创建新的字典
new_list = []
new_list_2 = []
for value in dict_a.values():
if value in dict_b.keys():
new_list.append(value)
for id in new_list():
if item in dict_b.keys():
new_list_2.append(dict_b.values())
这将返回new_list中每个键实例的dict_b值中存储的值的每个值。此外,如果在Dict_a中多次出现FID号,则需要在dict_c中创建一个新条目。显然我上面的代码不起作用,我认为我的逻辑不正确。任何帮助将不胜感激。
答案 0 :(得分:0)
这应该是技巧:
dict_a = {11111: "FID01", 22222: "FID01", 33333: "FID03", 44444: "FID01"}
dict_b = {"FID01": 25, "FID02": 50, "FID03": 75, "FID04": 90}
dict_c = {}
for k in dict_a:
dict_c[k] = dict_b[dict_a[k]]
print dict_c
输出:
{11111: 25, 22222: 25, 33333: 75, 44444: 25}
但是,这根本没有错误处理。如果key
中有一个dict_a
,而dict_b
中不存在该值,则会得到一个KeyError
答案 1 :(得分:0)
尝试此代码:
dict_a = dict({11111: "FID01", 22222: "FID01", 33333:"FID03", 44444: "FID01"} )
dict_b = dict({"FID01": 25, "FID02": 50, "FID03": 75, "FID04": 90})
dict_b_keys = dict_b.keys()
{key: dict_b[value] for (key, value) in dict_a.items() if value in dict_b_keys}
{11111:25,22222:25,33333:75,44444:25}
如果您有dict_a中的值不在dict_b键中,则我添加了“ dict_b_keys”变量