Python 如果x值相同,如何添加元组y值?
如果x值相同(我正在处理700000个元组),如何有效地添加元组y值 我正在尝试的是: 我正在尝试将元组列表转换为单个词典列表。然而,对我来说,这并不是最有效的方法 然而,我不知道如何将元组列表转换为单个词典列表 我尝试了dict(开始)和以下内容:Python 如果x值相同,如何添加元组y值?,python,list,dictionary,tuples,Python,List,Dictionary,Tuples,如果x值相同(我正在处理700000个元组),如何有效地添加元组y值 我正在尝试的是: 我正在尝试将元组列表转换为单个词典列表。然而,对我来说,这并不是最有效的方法 然而,我不知道如何将元组列表转换为单个词典列表 我尝试了dict(开始)和以下内容: end = [(1,5),(3,9)] 我还能怎么做呢 然后我打算尝试使用: a = [] for lv in length_view: a.append(dict(lv)) 使用集合模块中的defaultdict功能 from col
end = [(1,5),(3,9)]
我还能怎么做呢
然后我打算尝试使用:
a = []
for lv in length_view:
a.append(dict(lv))
使用集合模块中的
defaultdict
功能
from collections import Counter
c = Counter()
for some_dictionary in some_list:
c.update(some_dictionary)
[{key: value} for key, value in c.items()]
您可以使用方法创建一个具有唯一键和相关值列表的字典,然后在其项上循环并计算值的<代码>和代码>:
from collections import defaultdict
start = [(1,2),(3,4),(1,3),(3,5)]
d = defaultdict(list)
for x,y in start:
d[x].append(y)
print [(i,sum(j)) for i,j in d.items()]
或者作为一种更有效的方法,使用集合。defaultdict:
>>> start = [(1,2),(3,4),(1,3),(3,5)]
>>> d={}
>>> for i,j in start:
... d.setdefault(i,[]).append(j)
...
>>> [(i,sum(j)) for i,j in d.items()]
[(1, 5), (3, 9)]
我能想到的一种方法是-
如果您使用的是Python2.x,那么在
dic.items()
周围就不需要list(..)
了,因为.items()
在Python2.x中返回了一个列表当您最终对值求和时,为什么要使用一个列表作为默认dict容器呢。
>>> start = [(1,2),(3,4),(1,3),(3,5)]
>>> d={}
>>> for i,j in start:
... d.setdefault(i,[]).append(j)
...
>>> [(i,sum(j)) for i,j in d.items()]
[(1, 5), (3, 9)]
>>> from collections import defaultdict
>>> d = defaultdict(int)
>>> for i,j in start:
... d[i]+=j
...
>>> d.items()
[(1, 5), (3, 9)]
>>> from collections import defaultdict
>>> dic = defaultdict(int)
>>> for a, b in start:
... dic[a] += b
...
>>> list(dic.items())
[(1, 5), (3, 9)]