Re: [問題] list相同key數值相加

看板Python作者 (Mr.熊)時間13年前 (2012/06/15 01:52), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/4 (看更多)
※ 引述《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
文章代碼(AID): #1FsYJpOC (Python)
文章代碼(AID): #1FsYJpOC (Python)