gpt4 book ai didi

python - 如何根据另一个列表计算项目在列表中出现的次数

转载 作者:太空狗 更新时间:2023-10-30 01:45:29 26 4
gpt4 key购买 nike

假设我有如下两个列表:

list1 = ["a","b","a","a","b","a","b","a","b","b","b"]
list2 = ["pos","neg","pos","neu","neg","pos","pos","pos","neg","neu","pos"]

我想计算 "pos""neg""neu" 中每个项目出现的次数 list1

因此 "pos","neg""neu""a" 一起出现的次数,对于 “b”。例如,list1 中的第一个元素,"a" 有一个 "pos" 值,因为 list2[0] 用于 "pos"

最好的方法是什么?与我目前所做的相比,我觉得有更好的解决方案。我可以看到,如果 list1 中存在更多独特的项目,我的方法将不可行。

list1 = ["a","b","a","a","b","a","b","a","b","b","b"]
list2 = ["pos","neg","pos","neu","neg","pos","pos","pos","neg","neu","pos"]

a_pos = 0
a_neg = 0
a_neu = 0
b_pos = 0
b_neg = 0
b_neu = 0

for i in range(len(list1)):
if list1[i] == "a":
if list2[i] == "pos":
a_pos +=1
elif list2[i] == "neg":
a_neg +=1
else:
a_neu +=1
if list1[i] == "b":
if list2[i] == "pos":
b_pos +=1
elif list2[i] == "neg":
b_neg +=1
else:
b_neu +=1

print(a_pos,a_neg,a_neu)
print(b_pos,b_neg,b_neu)

最佳答案

你可以使用 Counter使用 zip:

from collections import Counter
Counter(zip(list1, list2))

Counter({('a', 'pos'): 4,
('b', 'neg'): 3,
('a', 'neu'): 1,
('b', 'pos'): 2,
('b', 'neu'): 1})

其中 zip 正在创建一个迭代器,其中两个列表中的元素交错排列:

[('a', 'pos'), ('b', 'neg'), ('a', 'pos'),...

所以上面的工作是因为 zip 正在返回元组,这些元组是可散列的,这是 Counter 在其元素被存储时工作的必要条件作为字典

关于python - 如何根据另一个列表计算项目在列表中出现的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56168182/

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