Python:如何使用一个字典来解码另一个字典



假设我有两个字典:

d1 = {'a':1, 'b':2}
d2 = {'a':'b', 'b':'b', 'a':'a'}

如何使用字典d1作为解码d2的规则,例如:

def decode(dict_rules, dict_script):
//do something
return dict_result
decode(d1,d2)
>> {1:2, 2:2, 1:1}

当然它可以写得更短,但这里有一个版本来看看原理:

result_list = list()
result_dict = dict()
for d2_key in d2.keys():
d2_key_decoded = d1[d2_key]
d2_value = d2[d2_key]
d2_value_decoded = d1[d2_value]
result_dict[d2_key_decoded] = d2_value_decoded
# add a tuple to the result list  
result_list.append((d2_key_decoded, d2_value_decoded))

结果可能是出乎意料的-因为生成的dict会有具有相同密钥的条目,这是不可能的,所以密钥1被覆盖:

>>> # equals to : 
>>> result_dict[1] = 2
>>> result_dict[2] = 2
>>> result_dict[1] = 1
>>> # Result : {1:1, 2:2}
>>> # therefore I added a list of Tuples as result : 
>>> # [(1, 2), (2, 2), (1, 1)]

但正如@Patrik Artner所指出的,这是不可能的,因为输入字典已经不能有重复的键了!

最新更新