qhnw.net
当前位置:首页 >> python多个列表合并 >>

python多个列表合并

没办法,word有那功能,excel没拆分功能 ,只能多加一整列后逐个与后横列的合并在一起,再调整到原来的形式.只有这个笨办法.

#!/usr/bin/env python#-*- coding: utf-8 -*-def merge(x, y): for k,v in y.items(): try: a_v = [] x_pre = x[k] if isinstance(x_pre,list): a_v.extend(x_pre) else: a_v.append(x_pre) a_v.append(v) x[k] = list(set(a_v)) except KeyError: x[k] = v return xprint reduce(merge, (dic1,dic2,dic3))复杂度,O(n) , 对于列表可以先转换成字典!!

list1=[('a',1),('b',5),('c',3)]list2=[('a',2),('b',2)]hash = {}for i,k in list1+list2: if i not in hash: hash[i] = k elif k >= hash[i]: hash[i] = klist3 = hash.items()print(list3)这样吗 随便写的

list1 = ['1','2','3']list2 = ['a','b','c']list3 = ['A','B','C']d = {}for i in range(0, len(list1)): d[list1[i]]=(list2[i], list3[i]);print(d)

Name = ['a', 'b', 'c']Value = [3, 6, 7]List = [{'name': t[0], 'value': t[1]} for t in zip(Name, Value)]print(List)

如果是大文件的话不适合将数据预先读入内存形成dict进行后期处理 但有两个方法: 1. 用 key-value数据库如bsddb模拟内存中的dict2. 对两个文件先用系统工具软件进行排序(如linux下的sort),然后再同时打开两个文件 在两个文件中顺序处理根据key值大小的不一移动不同的指针;然后进行合并逻辑.

给个代码示例吧:a=[1,2,3]b=[4,5,6]c=a[:]c=c+b #此时列表c的内容是a与b合并后的内容如果是原地合并,即把a与b的内容合并到a,则代码如下:a=[1,2,3]b=[4,5,6]a.extend(b) #此时列表a的内容是a与b合并后的内容

#!/usr/bin/env python# coding: utf-8a = [[1,2],[3,4]]b = [['a','b'],['c','d'],['e','f']]c = [['a1', 0]]d = [[10, 20],[11,21]]additional = ['null', 'null']def mergelist(*lsts): maxlength = max(map(len, lsts)) data = map(lambda x: x + (maxlength - len(x)) * [additional], lsts)

>>> l1= [1,2,3]>>> l2 = [4,5,6]>>> print l1+l2[1, 2, 3, 4, 5, 6]>>>

除了直接相加(生成新的list),还有两种方法(修改其中一个list):1. 用list的extend方法,L1.extend(L2),该方法将参数L2的全部元素添加到L1的尾部,例如:>>> L1 = [1, 2, 3, 4, 5]>>> L2 = [20, 30, 40]>>> L1.extend(L2)>>> L1[1, 2, 3, 4, 5, 20,

网站首页 | 网站地图
All rights reserved Powered by www.qhnw.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com