gpt4 book ai didi

python - 遍历列表,组合数量

转载 作者:太空宇宙 更新时间:2023-11-04 10:41:31 27 4
gpt4 key购买 nike

我创建了一个简单的程序来获取简化的 sku 和 qty 列表并将其添加到另一个列表中。但是,如果 sku 已经在第二个列表中,我只想增加数量而不是添加副本。我已经尝试了几种不同的 for 循环,但我无法让它工作。

myList = [["a",1],["c",1],["a",1]] #[sku, qty]
newList = [["null",0]] #placeholder value so second for loop functions

for eachItem in myList:
for eachNew in newList:
if eachItem[0] == eachNew[0]: # if sku is in list increment qty
eachNew[1] += eachItem[1]
myList.remove(eachItem)
else:
newList.append([eachItem[0], eachItem[1]]) #else add the sku to the list
myList.remove(eachItem)

#remove null place holder
for eachItem in newList:
if eachItem[0] == "null":
newList.remove(eachItem)

for eachItem in newList:
print(eachItem)

我想要的输出是:

['a', 2]
['c', 1]

编辑:我刚刚意识到我在我的 OP 中不够清楚。我不想计算一个 sku 出现的次数我想添加所有数量。数量可能不止一个。

最佳答案

尝试使用 value_counts从 pandas 库中像这样:

import pandas as pd
myList = [["a",1],["c",1],["a",1]]
myList = pd.Series(myList)
mylist.value_counts().to_list()

会产生:

[['a',2],['c',1]]

像这个例子

In [83]: data

array([4, 6, 6, 1, 2, 1, 0, 5, 3, 2, 4, 3, 1, 3, 5, 3, 0, 0, 4, 4, 6, 1, 0,
4, 3, 2, 1, 3, 1, 5, 6, 3, 1, 2, 4, 4, 3, 3, 2, 2, 2, 3, 2, 3, 0, 1,
2, 4, 5, 5])

In [84]: s = Series(data)

In [85]: s.value_counts()

3 11
2 9
4 8
1 8
5 5
0 5
6 4
dtype: int64

它背后的编程比for循环要高效得多,因为基础是用C写的。你可以使用to_list()方法,mylist.value_counts().to_list( ),使其完全符合您想要的输出。

* 此代码未经测试

关于python - 遍历列表,组合数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20391006/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com