Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.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类sql group by中列表元素的总和列表_Python_List - Fatal编程技术网

python类sql group by中列表元素的总和列表

python类sql group by中列表元素的总和列表,python,list,Python,List,我有一个列表列表(字符串、整数) 例如: 我想对相同的项目求和,最后得到: my2_list=[["apple",116],["banana",15],["orange",9]] 或者,您可以将结果保留为字典,您可以在排序列表中使用: 说到SQL分组依据和预排序: groupby()的操作类似于Unix中的uniq筛选器。信息技术 每次键的值更改时生成一个中断或新的组 功能更改(这就是为什么通常需要对进行排序的原因 使用同一按键功能的数据)。那种行为不同于 SQL的组,通过该组聚合公共元素,

我有一个列表列表(字符串、整数)

例如:

我想对相同的项目求和,最后得到:

my2_list=[["apple",116],["banana",15],["orange",9]]
或者,您可以将结果保留为字典,您可以在排序列表中使用:


说到SQL分组依据和预排序:

groupby()
的操作类似于Unix中的uniq筛选器。信息技术 每次键的值更改时生成一个中断或新的 功能更改(这就是为什么通常需要对进行排序的原因 使用同一按键功能的数据)。那种行为不同于 SQL的组,通过该组聚合公共元素,而不考虑其属性 输入顺序


使用熊猫和groupby强调地雷

import pandas as pd

>>> pd.DataFrame(my_list, columns=['fruit', 'count']).groupby('fruit').sum()
        count
fruit        
apple     116
banana     15
orange      9

如果您不想保留订单,请使用以下代码

my_list=[["apple",5],["banana",6],["orange",6],["banana",9],["orange",3],["apple",111]]
my_dict1 = {}

for d in my_list:
   if d[0] in my_dict1.keys():
      my_dict1[d[0]] += d[1]
   else:
      my_dict1[d[0]] = d[1]

my_list2 = [[k,v] for (k,v) in my_dict1.items()]

您不需要在key@MosesKoledoye它似乎是这样工作的,但找不到任何文档确认它将按子列表的第一个元素进行排序。如果未提供排序键,则直接比较元素:
['a',2]<['b',5]->True
。我认为把类似的物品作为邻居放在一起进行分类就足够了,因为这种情况下的顺序并不完全相同needed@MosesKoledoye很好。在看了列表是如何比较的之后,它现在变得非常有意义了。谢谢你指出这一点。
from itertools import groupby

my_list=[["apple",5],["banana",6],["orange",6],["banana",9],["orange",3],["apple",111]]

my_list2 = []
for i, g in groupby(sorted(my_list), key=lambda x: x[0]):
    my_list2.append([i, sum(v[1] for v in g)])

print(my_list2)
# [['apple', 116], ['banana', 15], ['orange', 9]]
from itertools import groupby
[[k, sum(v for _, v in g)] for k, g in groupby(sorted(my_list), key = lambda x: x[0])]

# [['apple', 116], ['banana', 15], ['orange', 9]]
import pandas as pd

>>> pd.DataFrame(my_list, columns=['fruit', 'count']).groupby('fruit').sum()
        count
fruit        
apple     116
banana     15
orange      9
my_list=[["apple",5],["banana",6],["orange",6],["banana",9],["orange",3],["apple",111]]
my_dict1 = {}

for d in my_list:
   if d[0] in my_dict1.keys():
      my_dict1[d[0]] += d[1]
   else:
      my_dict1[d[0]] = d[1]

my_list2 = [[k,v] for (k,v) in my_dict1.items()]