Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果x值相同,如何添加元组y值?_Python_List_Dictionary_Tuples - Fatal编程技术网

Python 如果x值相同,如何添加元组y值?

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

如果x值相同(我正在处理700000个元组),如何有效地添加元组y值

我正在尝试的是:

我正在尝试将元组列表转换为单个词典列表。然而,对我来说,这并不是最有效的方法

然而,我不知道如何将元组列表转换为单个词典列表

我尝试了dict(开始)和以下内容:

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)]