在Python中合并字典
我刚开始学习Python。我有两个已经排序好的数组(按键排序),我想把它们合并在一起。这两个数组有一些相同的键,也有一些键只在其中一个数组里。我想做一个外连接。
Array1 = {'key_1': 10, 'key_2': 14,..'key_m': 321}
Array2 = {'key_1': 15, 'key_2': 12..'key_m':2,..'key_n':34}
我想用key_1..key_n来合并这些数组。
Array3 = [[key_1',10,15],['key_2':14:12],..]
我电脑上没有安装numpy这个包。我需要它来合并这些数组吗?有什么好的方法来实现这个吗?谢谢!!!
2 个回答
1
你的 Array3
语法不正确。你可以试试下面这样的写法:
>>> Array1 = {'key_1': 10, 'key_2': 14, 'key_m': 321}
>>> Array2 = {'key_1': 15, 'key_2': 12, 'key_m':2, 'key_n':34}
>>>
>>> Array3_dict = dict()
>>> for Array in (Array1, Array2):
... for key, value in Array.items():
... if not key in Array3_dict: Array3_dict[key] = list()
... Array3_dict[key].append(value)
...
>>> Array3 = [ [ key ] + value for key, value in Array3_dict.items() ]
>>> Array3.sort()
>>> print Array3
[['key_1', 10, 15], ['key_2', 14, 12], ['key_m', 321, 2], ['key_n', 34]]
>>>
3
这样怎么样?
#!/usr/bin/env python
from itertools import chain
dict1 = {'key_1': 10, 'key_2': 14, 'key_m': 321}
dict2 = {'key_1': 15, 'key_2': 12, 'key_m':2, 'key_n':34}
dict3 = {}
# Go through all keys in both dictionaries
for key in set(chain(dict1, dict2)):
# Find the key in either dictionary, using an empty
# string as the default if it is not found.
dict3[key] = [dict.get(key, "")
for dict in (dict1, dict2)]
print(dict3)
现在,dict3
里有了输入数组中每个值的列表。
或者如果你想要那种[[键, 值, 值], [键, 值, 值]...]
的格式:
#!/usr/bin/env python
from itertools import chain
dict1 = {'key_1': 10, 'key_2': 14, 'key_m': 321}
dict2 = {'key_1': 15, 'key_2': 12, 'key_m':2, 'key_n':34}
result = [[key] + [dict.get(key, "")
for dict in (dict1, dict2)]
for key in set(chain(dict1, dict2))]
result.sort()
print(result)