gpt4 book ai didi

python - 计算元组列表中出现的次数

转载 作者:IT老高 更新时间:2023-10-28 20:58:57 27 4
gpt4 key购买 nike

我对 python 还很陌生,但我无法在任何地方找到解决问题的方法。

我想计算一个字符串在元组列表中出现的次数。

这是元组列表:

list1 = [
('12392', 'some string', 'some other string'),
('12392', 'some new string', 'some other string'),
('7862', None, 'some other string')
]

我试过了,但它只打印 0

for entry in list1:
print list1.count(entry[0])

由于相同的 ID 在列表中出现两次,这应该返回:

2
1

我还尝试为每次出现相同的 ID 增加一个计数器,但无法完全掌握如何编写它。

*编辑:使用 Eumiro 的绝妙答案。我才意识到我没有解释整个问题。我实际上需要值大于 1 的条目总数。但如果我尝试这样做:

for name, value in list1:

if value > 1:
print value

我收到此错误:

ValueError: Too many values to unpack

最佳答案

也许 collections.Counter可以解决你的问题:

from collections import Counter
Counter(elem[0] for elem in list1)

返回

Counter({'12392': 2, '7862': 1})

它很快,因为它只遍历您的列表一次。您迭代条目,然后尝试在列表中获取这些条目的计数。 .count 无法做到这一点,但可以按如下方式完成:

for entry in list1:
print(sum(1 for elem in list1 if elem[0] == entry[0]))

但是说真的,看看 collections.Counter

编辑:我实际上需要值大于 1 的条目总数。

您仍然可以使用计数器:

c = Counter(elem[0] for elem in list1)
sum(v for k, v in c.iteritems() if v > 1)

返回2,即大于1的计数总和。

关于python - 计算元组列表中出现的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16013485/

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