使用公共键/值合并python中的词典
我希望将Python中的字典与具有公共值然后是键的字典合并。目前,我有一个令人讨厌的循环。一定有更好的方法 我拥有的是一个字典,其中有一个单数键和该值的数字列表,然后是第二个字典,其中一个键对应于值列表中的一个数字,还有一个与该数字相关联的浮点数。它们的格式如下(尽管要大得多): 我想把它们合并成这样:使用公共键/值合并python中的词典,python,python-2.7,dictionary,Python,Python 2.7,Dictionary,我希望将Python中的字典与具有公共值然后是键的字典合并。目前,我有一个令人讨厌的循环。一定有更好的方法 我拥有的是一个字典,其中有一个单数键和该值的数字列表,然后是第二个字典,其中一个键对应于值列表中的一个数字,还有一个与该数字相关联的浮点数。它们的格式如下(尽管要大得多): 我想把它们合并成这样: dict3 = {0:[0.32221, 0.99435, 0.76839, 0.01546], 1:[0.45623, 0.871265, 0.034123, 0.28665]} 有没有比几
dict3 = {0:[0.32221, 0.99435, 0.76839, 0.01546], 1:[0.45623, 0.871265, 0.034123, 0.28665]}
有没有比几个嵌套for循环更简单的方法?任何帮助都将不胜感激 您可以使用dict理解中的嵌套列表理解来执行此操作:
>>> dict1 = {0:[3, 5, 2, 7], 1:[1, 4, 0, 6]}
>>> dict2 = {0:0.34123, 1:0.45623, 2:0.76839, 3:0.32221, 4:0.871265, 5:0.99435, 6:0.28665, 7:0.01546}
>>> {k:[dict2[m] for m in v] for k, v in dict1.items()}
{0: [0.32221, 0.99435, 0.76839, 0.01546], 1: [0.45623, 0.871265, 0.34123, 0.28665]}
dict3 = {k: [dict2[i] for i in v] for k, v in dict1.items()}
这将基本上遍历第一个字典中的所有
k/v
-组合。k
作为生成的字典的键保存,而v
是dict2
中应使用哪些值的所有索引的列表。因此,我们遍历v
中的元素,从dict2
中收集我们想要获取的所有项目,将这些项目组合在一个列表中(使用列表理解),并将该结果用作结果字典的值。您可以使用dict理解中的嵌套列表理解来实现这一点:
dict3 = {k: [dict2[i] for i in v] for k, v in dict1.items()}
这将基本上遍历第一个字典中的所有
k/v
-组合。k
作为生成的字典的键保存,而v
是dict2
中应使用哪些值的所有索引的列表。因此,我们遍历v
中的元素,并从dict2
中收集我们想要获取的所有项目,将这些项目组合在一个列表中(使用列表理解),并使用该结果作为结果字典的值。还有另一个字典理解,但是使用map
dict3={k: map(lambda x: dict2[x],dict1[k]) for k in dict1.iterkeys()}
还有另一本字典,但有地图
dict3={k: map(lambda x: dict2[x],dict1[k]) for k in dict1.iterkeys()}
以什么方式合并它们?我真的看不出这些数字之间有什么明显的关联。以什么方式合并它们?我真的看不出这些数字之间有什么明显的相关性。优雅完美!谢谢,哇。优雅完美!谢谢。你得到了与上面@poke相同的答案。非常感谢。你得到了与上面@poke相同的答案。非常感谢。