--------------------------------这些方法你全会吗?反正不总结之前的我不是!--------------------------------
注意:此方法是最普通的写法;相同的键则更新,不同的键则增加
注意:该方法相同的键后面的会覆盖前面的,不同的键才会合并到一个字典中
注意:此方法即更新,符合字典的特性:存在即更新,不在即添加
注意:在python2中可能a.items()返回的是一个list,但此方法在python3中并不适用; 在python3中返回的是一个dict_items([(‘键’,‘值’),(‘键’,‘值’)…]),不能用相加的方法
- (2)第二种:先通过a.items()|b.items()方法获取a,b中所有存在的键和值,再通过dict()转换 dict(a.items() | b.items())
a = {'姓名':"张三",'年龄':10,'name':"王五",'age':30} b = {'name':"李四",'age':20,'sex':"男"} print(a.items(),type(a.items())) ## dict_items([('姓名', '张三'), ('年龄', 10), ('name', '王五'), ('age', 30)]) <class 'dict_items'> print(a.items() | b.items()) # {('name', '李四'), ('age', 20), ('sex', '男'), ('name', '王五'), ('姓名', '张三'), ('年龄', 10), ('age', 30)} c= dict(a.items() | b.items()) print(c) ## {'姓名': '张三', '年龄': 10, 'name': '李四', 'age': 20, 'sex': '男'}注意:跟上面的一样,不同的增加,相同的更新
注意:这种方法对两个字典中的键值要求很严格,如果有重复的键就会报错,你可以将其想象为and,在一个字典中有两个相同的键肯定不通过
错误例子如下:
a = {'姓名':"张三",'年龄':10,'age':30} b = {'name':"李四",'age':20,'sex':"男"} print(dict(**a, **b))正确实例:
a = {'姓名':"张三",'年龄':10,'age':30} b = {'name':"李四",'sex':"男"} print(dict(**a, **b))总结:这种方法要慎用!!!
注意:结果是b放在a的后面
这里面a[0:0]中的0可以替换为a列表中有的下标,区别就是b插入的位置不同
# a = [1,2,3,4,5] # b=[6,7,8,9] # a[0:0]=b # print(a) # [6, 7, 8, 9, 1, 2, 3, 4, 5]注意:结果是b放在a的前面
注意:结果是b加到a的后面 ;将b当做一个整体放在a后面
这种方法太费劲了,不推荐使用。
list1 = [1,2,3] list2 = [4,5,6] list_new = [] for item in list1: list_new.append(item) for item in list2: list_new.append(item) print (list_new)注意:得到的是在s列表的基础上加上b列表作为a列表的一项,严格来说并不算是合并。
aList = [1,2,3] bList = ['www', 'pythontab.com'] aList.append(bList) print(aList) # 结果: [1, 2, 3, ['www', 'pythontab.com']]注意:这种方法很蠢,跟上面第四种相似,不推荐使用;而且这种方法有缺陷,zip内置函数匹配的len(a),len(b)必须相等,否则多出的数就会取不到,这是zip的特性。
a = [1,2,3] b = [4,5,6] c = zip(a,b) # <zip object at 0x0000000002597848> zip对象 里面放着对应a[0],b[0]的元组 print(c) d = list(c) print(d) # [(1, 4), (2, 5), (3, 6)] list = [j for i in d for j in i] print(list) # [1, 4, 2, 5, 3, 6]