旧值和新键相同时,使用旧键合并字典

时间:2017-08-24 09:21:03

标签: python dictionary

我想要合并两个这样的词典:

old={'a':'1a','b':'1b','c':'1c'}
new={'1a':'c','1b':'d','1c':'e'}

我想要这样的输出:

new_dict={'a':'c','b':'d','c':'e'}

注意:两个词典的长度不同。

如何在python中完成?

3 个答案:

答案 0 :(得分:2)

您可以使用字典理解来获取新字典,您可以根据旧字典中的键从新字典中获取值。如果旧词典中的值不作为新词典中的键出现,请务必使用默认返回get的{​​{1}}。

None

答案 1 :(得分:2)

用词汇理解:

@ViewChild(MvcPartialComponent) mvcPartialComponent: MvcPartialComponent;

<mvc-partial #mvc-partial></mvc-partial>
@ViewChild('mvc-partial') mvcPartialComponent: MvcPartialComponent;

*请注意,old = {'a': '1a','b': '1b','c': '1c'} new = {'1a': 'c','1b': 'd','1c': 'e'} res = {k: new[v] for k, v in old.items()} # if all values in `old` exist in `new` as keys. res = {k: new.get(v, None) for k, v in old.items()} # if you cannot guarantee the above. print(res) # {'b': 'd', 'a': 'c', 'c': 'e'} 方法的None参数是默认值,因此可以省略。我会留在那里,但是提醒您,根据问题的具体情况,您可以指定任何您想要的内容(例如,.get()(空白字符串)在您的情况下可能更好)

答案 2 :(得分:1)

您可以使用字典理解将第一个字典的值解释为第二个字典的键:

>>> {item: new[value] for item, value in old.items() if value in new}
{'a': 'c', 'b': 'd', 'c': 'e'}

如果您可以确保old的所有值都在new中,则可以省略if value in new部分。