首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用python统计列表中属于不同分组的条目?

如何使用python统计列表中属于不同分组的条目?
EN

Stack Overflow用户
提问于 2019-08-16 01:26:12
回答 2查看 56关注 0票数 0

我有一个列表,就像你在下面看到的一样,我想计算一下列表的第一个元素相对于元组的第一个元素出现了多少次。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[['a', (2, 0.4632342), 0, 0],
 ['b', (2, 0.38278952), 0, 0],
 ['a', (0, 0.51164687), 0, 2],
 ['a', (2, 0.49053752), 0, 0],
 ['b', (6, 0.22554141), 0, 1],
 ['b', (11, 0.33718306), 0, 0],
 ['a', (0, 0.51265407), 0, 0],
 ['b', (0, 0.38063252), 0, 0],
 ['a', (2, 0.3401981), 0, 0],
 ['a', (6, 0.39846212), 0, 0]]

在上面的列表中,结果应该如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{'2':{'a':'3','b':'1'}, '0':{'a':'2' , 'b':'1'}, '6':{'a':'1', 'b':'1'}, '11':{'a':0 , 'b':'1'}}

或者这样:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{'2':{(a,3),(b,1)}, '0':{(a,2), (b,1)}, '6':{(a,1), (b,1)}, '11':{(a,0) , (b,1)}}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-16 01:31:15

使用collections.Counteritertools.groupby

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from collections import Counter
from itertools import groupby

f = lambda x: x[1][0]
d = {k: Counter(i[0] for i in g) for k, g in groupby(sorted(l, key=f), key=f)}
print(d)

输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{0: Counter({'a': 2, 'b': 1}), 2: Counter({'a': 3, 'b': 1}), 11: Counter({'b': 1}), 6: Counter({'b': 1, 'a': 1})}
票数 3
EN

Stack Overflow用户

发布于 2019-08-16 02:04:50

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
l = [['a', (2, 0.4632342), 0, 0],
 ['b', (2, 0.38278952), 0, 0],
 ['a', (0, 0.51164687), 0, 2],
 ['a', (2, 0.49053752), 0, 0],
 ['b', (6, 0.22554141), 0, 1],
 ['b', (11, 0.33718306), 0, 0],
 ['a', (0, 0.51265407), 0, 0],
 ['b', (0, 0.38063252), 0, 0],
 ['a', (2, 0.3401981), 0, 0],
 ['a', (6, 0.39846212), 0, 0]]

unique_first_in_tuples = set([x[1][0] for x in l])
unique_first_in_lists = set([x[0] for x in l])

def counter(first_tuple):
    int_dict = {y : len([x for x in l if x[0]==y 
               and x[1][0]==first_tuple]) for y in 
               unique_first_in_lists}
    return int_dict

output = {x : counter(x) for x in unique_first_in_tuples}

返回:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{0: {'a': 2, 'b': 1}, 2: {'a': 3, 'b': 1}, 11: {'a': 0, 'b': 1}, 6: {'a': 1, 'b': 1}}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57517937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文