对于大型列表,您可以这样做(不匹配硬编码的字符串):
from collections import defaultdict
my_list = [['chr1',65419,65433],['chr1',65520,65573],69037,71585],69055,70108],137621,139379],['chr2',['chr3',70108]]
result = defaultdict(int)
temp = [{i[0]:i[2]-i[1]} for i in my_list]
for di in temp:
result [ list(di.keys())[0] ] += list(di.values())[0]
for i,v in result.items():
print(f"{i} total = {v}")
,
numpy.savetxt
,
my_list = [['chr1',70108]]
mylist1=list()
mylist2=list()
mylist3=list()
for i in my_list:
if i[0]=='chr1':
mylist1.append(i[2]-i[1])
elif i[0]=='chr2':
mylist2.append(i[2]-i[1])
elif i[0]=='chr3':
mylist3.append(i[2]-i[1])
print("chr1:",sum(mylist1))
print("chr2:",sum(mylist2))
print("chr3:",sum(mylist3))
sum已经是要使用的预定义函数。
现在,如果您还有更多的时间:
my_list = [['chr1',70108]]
chrset=set()
for i in my_list:
chrset.add(i[0])
res = dict.fromkeys(chrset,0)
for i in my_list:
res[i[0]]=res[i[0]]+i[2]-i[1]
print(res)
对于python新手来说,创建一组chr1,chr2,.....然后创建字典并直接对其进行操作会容易得多。
,
您可以使用字典来保存键-值对,并在具有相同键的更多列表更新时对其进行更新。
my_dict=dict()
for entry in my_list:
if entry[0] in my_dict:
my_dict[entry[0]]+=entry[2]-entry[1]
else:
my_dict [entry[0]]=entry[2]-entry[1]
无论您拥有什么键,它都可以工作(不限于示例中的三个键)
本文链接:https://www.f2er.com/3089784.html