python中的字典合并的四种方法举例

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

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值合并在一个里面,结果如下图哈~可能我前面写的比较啰嗦啊哈~不影响我们看这个结果啊嘻嘻

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值