作者bowans (Mr.熊)
看板Python
标题Re: [问题] list相同key数值相加
时间Fri Jun 15 01:52:49 2012
※ 引述《ntasop (kuli)》之铭言:
: [['102C', '1', '0'], ['1040', '0', '250'], ['1042', '5', '10'],
: ['1040', '0', '1000'], ['1090', '0', '40'], ['1090', '['1090', '20', '0'],
: ['102C' '20', '0'], ['1142', '0', '21000'],......]
: 真的不好意思写不出来,所以来请教高手,
: 有比较快的方法把上面list相同key1後key2,key3相加?
用前三笔资料当例子:
data = [['102C', '1', '0'],
['1040', '0', '250'],
['1042', '5', '10']]
如果想要相加资料中每一个 list 的每一个 element,
可以先用 zip(*data) 拿到由相同 element index 组成的 list:
[('102C', '1040', '1042'), ('1', '0', '5'), ('0', '250', '10')]
如此一来就简单多了,
假设第一个 element 存放的是16进位的值,其他是10进位的话:
k1, k2, k3 = zip(*data)
sum(map(lambda x: int(x, 16), k1)) # 得到第一个 element 总合 12462 (10进位)
sum(map(int, k2)) # 得到第二个 element 总合 6
sum(map(int, k3)) # 得到第三个 element 总合 260
---
希望没有理解错~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.240.184.27