Python 我有一个很大的字典列表,我想总结一下里面的内容

Python 我有一个很大的字典列表,我想总结一下里面的内容,python,list,dictionary,sum,Python,List,Dictionary,Sum,差不多 {A: 3, 45, 34, 4, 2, 5, 94, 2139, 230345, 283047, 230847}, {B: 92374, 324, 345, 345, 45879, 34857987, 3457938457), {C: 23874923874987, 2347} a = numpy.arange(10, 2000000) total = numpy.sum(a) 我怎样才能把它减少到 {A: 2304923094820398}, {B: 237492378489

差不多

{A: 3, 45, 34, 4, 2, 5, 94, 2139, 230345, 283047, 230847}, {B: 92374, 324, 345, 345, 45879, 34857987, 3457938457), {C: 23874923874987, 2347}
 a = numpy.arange(10, 2000000)
 total = numpy.sum(a)
我怎样才能把它减少到

{A: 2304923094820398}, {B: 2374923784897}, {C: 29348239847239847}
值显然不精确。我只想以一种不耗费时间的方式将所有值相加。

类似这样的内容:

a={'a':range(100), 'b':range(200)}
b={}

for k,v in a.iteritems():
    b[k]=sum(v)

print b
给予


假设值位于列表中,如:

d = {A: [3, 45, 34, 4, 2, 5, 94, 2139, 230345, 283047, 230847]}, {B: [92374, 324, 345, 345, 45879, 34857987, 3457938457]), {C: [23874923874987, 2347]}
然后:


如果你有很多很多很多的值,类似的东西可能会起作用(假设“字典列表”的意思是“列表字典”,因为拥有一个包含一个键/值对字典的大列表是愚蠢的,因此这些值存储在一个
dict
中,比如
{'a':[3,45,34,4,2,5,94,2139,230345,283047,230847],“B”:[923743453454587948579873457938457],…}
):


如果你有大量的值,我可能会使用numpy和向量加法

比如

{A: 3, 45, 34, 4, 2, 5, 94, 2139, 230345, 283047, 230847}, {B: 92374, 324, 345, 345, 45879, 34857987, 3457938457), {C: 23874923874987, 2347}
 a = numpy.arange(10, 2000000)
 total = numpy.sum(a)

没有更多,也没有更少:)

“类似的东西”?没有确切的结构,我们无法给出确切的答案。这就是确切的结构。数字只是不同而已。@Fred Wilson-希望不是,那是无效的。大的事物列表比小的简单事物列表要花更长的时间来总结。在Python中对数字列表求和最好使用sum()函数。如果sum()函数不够快,您可以尝试编写C扩展或使用numpy try。不知什么原因,它总是给我一个错误。这是Python3特有的,因为我使用的是2.7。您的数据结构中有一个错误,数字需要用
[]
括起来,即在列表中。它们由该列表括起来。。。也许我犯了印刷错误。这应该行得通,因为我将它复制粘贴到我的python版本中并运行。@Fred Wilson:“出于某种原因,它一直给我一个错误”,这就是为什么我们要求(1)实际代码和(2)实际错误。请同时更新问题。我们猜不出你做错了什么。@Fred:你特别要求一个不费时的解决方案。如果有大量的值要进行多次求和,并且求和不会相互影响,那么最好并行处理它们。
from multiprocessing import Process, Lock

def sumfunc(lock, key, values):
    total = sum(values)

    lock.acquire()
    print(key + ':', total)   # The actual code would be better off utilizing shared multiprocessing.Array objects, but I haven't used them before so am not sure quite how you set them up so decided to leave that aside for now as this is just a theoretical example.
    lock.release()

if __name__ == '__main__':
    lock = Lock()

    for key, values in dict_of_values_to_sum.items():
        Process(target=sumfunc, args=(lock, key, values)).start()
 a = numpy.arange(10, 2000000)
 total = numpy.sum(a)
d = [{'A': [3, 45, 34, 4, 2, 5, 94, 2139, 230345, 283047, 230847]}, {'B': [92374, 324, 345, 345, 45879, 34857987, 3457938457]}, {'C': [23874923874987, 2347]}]
abc = {}
for x in d:
    for k, v in x.iteritems():
        abc[k] = reduce(lambda x,y: x+y, v)