【问题标题】:Addition of two lists with same asset number添加两个具有相同资产编号的列表
【发布时间】:2017-11-21 01:29:13
【问题描述】:

我在下面有以下列表,并想总结具有相同资产编号的资产值,以便我可以得到类似于下面的内容

Asset number Total
11230202     10500.5
11230101     79
11230213     0
11230228     0

资产编号列表:

[u'11230202',u'11230101',u'11230202',u'11230213',u' 11230202',你'11230232',你'11230202',你'11230202',你'11230202 ', u' 11230101 ', u' 11230202 ', u' 11230202 ', u' 11230228 ', u' 11230202',你'11230202',你'11230202',你'11230202',你'11230101 ']

资产价值清单:

[10000.0, 10, 0, 0, 0, 0, 500.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69]

【问题讨论】:

  • 到目前为止你尝试了什么,你在哪里卡住了?
  • 欢迎来到 StackOverflow。请阅读并遵循帮助文档中的发布指南。 on topichow to ask 在这里申请。 StackOverflow 不是设计、编码、研究或教程服务。

标签: python list


【解决方案1】:

你可以使用collections.defaultdict:

from collections import defaultdict
s = map(int, [u' 11230202 ', u' 11230101 ', u' 11230202 ', u' 11230213 ', u' 11230202 ', u' 11230232 ', u' 11230202 ', u' 11230202 ', u' 11230202 ', u' 11230101 ', u' 11230202 ', u' 11230202 ', u' 11230228 ', u' 11230202 ', u' 11230202 ', u' 11230202 ', u' 11230202 ', u' 11230101 '])
s1 = [10000.0, 10, 0, 0, 0, 0, 500.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69]
d = defaultdict(list)
for a, b in zip(s, s1):
   d[a].append(b)

final_d = {a:sum(b) for a, b in d.items()}
for a, b in sorted(final_d.items(), key=lambda x:x[-1], reverse=True):
   print(a, b)

输出:

(11230202, 10500.5)
(11230101, 79)
(11230232, 0)
(11230228, 0)
(11230213, 0)

【讨论】:

    猜你喜欢
    • 2015-03-21
    • 1970-01-01
    • 2012-08-25
    • 2011-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-08
    相关资源
    最近更新 更多