我试图计算多维数组第二个值中唯一字符串的数量。
我目前的代码是:
>>> a=[['1a','1b','1c'],['2a','2b','2c'],['3a','3b','3c']]
>>> from collections import Counter
>>> result=Counter(a[1]);
>>> result
Counter({'2a': 1, '2b': 1, '2c': 1})
但是,我希望输出为:
Counter({'1b': 1, '2b': 1, '3b': 1})
计算每个列表中的第二个值,而不是第二个列表中的三个值。
我意识到Counter(a[1])
是错误的,但我不确定如何以我想要的方式执行此操作。
答案 0 :(得分:3)
要计入第二个“列”,请尝试以下操作:
a = [['1a','1b','1c'],['2a','2b','2c'],['3a','3b','3c']]
from collections import Counter
result = Counter(zip(*a)[1])
print result
输出:
Counter({'3b': 1, '1b': 1, '2b': 1})
答案 1 :(得分:1)
应该比使用zip快一点:
from collections import Counter
a = [['1a','1b','1c'],['2a','2b','2c'],['3a','3b','3c']]
result = Counter(lst[1] for lst in a)
print(result)
给出
Counter({'3b': 1, '1b': 1, '2b': 1})