Python中的字典合并的四种方式以及value值是string类型时的字典合并
一. 普通的合并
dict1 = {'a':1,'b':2,'c':3}
dict2 = {'d':8,'e':7,'g':6}
合并得到:
{'a': 1, 'c': 3, 'b': 2, 'e': 7, 'd': 8, 'g': 6}
1.方法1 dict1.items()+dict2.items()
dict3 = {}
dict3 = dict(dict1.items()+dict2.items())
print type(dict3)
print dict3
输出结果为:

2.方法2,dict(dict1, **dict2)
dict4 = dict(dict1, **dict2)
输出结果如下图所示:

注意,此处的dict(dict1, **dict2)就等同于:

3.方法3,dict.update(other_dict)
dict1.update(dict2)
输出结果如下图所示:

在这块,要注意,dict.update(other_dict) 的方法只是将dict1进行了更新,并没有返回一个新的字典,此时的 返回值为None。
4.方法4,合并字典的经典方式,for循环 啊哈!
dict1 = {'a':1,'b':2,'c':3}
dict2 = {'d':8,'e':7,'g':6}
dict7 = {}
for k,v in dict1.items():
dict7[k] = v
for k,v in dict2.items():
dict7[k] = v
dict7
输出结果如下图所示:

以上就是字典合并的四种方式。顺便记录一下相同key值的两个字典合并时自己遇到的一两个小问题,嗯!
1.value值为int类型的,如下
from collections import Counter
dict1 = {'a':1,'b':2,'c':3}
dict2 = {'a':9,'d':8,'e':7,'b':6}
dict3 = {}
dict3 = dict(Counter(dict1)+Counter(dict2))
dict3
可以借助collections.Counter,很轻松地得到想要的结果,如下图所示:

2.value值为string类型的时(emmmm)
dic1 = {"[u'1_10', u'2_59', u'3_66', u'4_13', u'5_7']": '1_10'}
dic2 = {"[u'4_10', u'5_15', u'7_85', u'10_63']": '4_10', "[u'4_10', u'5_15', u'7_85', u'9_80']": '4_10'}
dic3 = {"[u'4_10', u'5_15', u'7_85', u'10_63']": '5_15', "[u'4_10', u'5_15', u'7_85', u'9_80']": '5_15'}
dic4 = {"[u'3_37', u'4_98', u'7_14', u'9_25', u'10_94']": '7_14'}
list = []
list.append(dic1)
list.append(dic2)
list.append(dic3)
list.append(dic4)
d = {}
for i in list:
for key in i:
if key not in d:
d[key] = i[key]
else:
d[key] = ", ".join([d[key], i[key]])
for i,j in d.items():
print i,j
emm,这个是我遇到的一个实际问题哈,就没有重新写例子了,能说明问题即可,我要做的是把这四个dict合并为一个,并且,key值相同的也要把他们的value值合并在一个里面,结果如下图哈~可能我前面写的比较啰嗦啊哈~不影响我们看这个结果啊嘻嘻

本文介绍了Python中字典合并的四种方法,包括items()合并、使用**操作符、update()方法以及for循环合并。还特别讨论了当value值为string类型时如何合并字典,保持相同key的value在一个字符串内。

5945

被折叠的 条评论
为什么被折叠?



