首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从计算元组项目出现次数的元组创建嵌套字典

从计算元组项目出现次数的元组创建嵌套字典
EN

Stack Overflow用户
提问于 2019-11-15 00:43:05
回答 3查看 85关注 0票数 0

我必须对元组列表进行排序,并创建一个字典,其中元组中的第一项作为键,嵌套字典将键作为第二项,出现次数作为值。我不确定如何处理这个问题,任何帮助都是很棒的。

代码语言:javascript
复制
[('academic', 'hacked'), ('academic', 'lost device'), ('academic', 'lost device'), ('academic', 'lost device'), ('energy', 'inside job'), ('financial', 'hacked')]

所需输出:

代码语言:javascript
复制
{'academic': {'lost device': 3, 'hacked': 1}, 'energy': {'inside job': 1}, 'financial': {'hacked': 1}}
EN

回答 3

Stack Overflow用户

发布于 2019-11-15 01:03:32

这不是pythonic式的方法,但至少它是有效的

代码语言:javascript
复制
mylist = [('academic', 'hacked'), ('academic', 'lost device'), ('academic', 'lost device'), ('academic', 'lost device'), ('energy', 'inside job'), ('financial', 'hacked')]        

dict = {}
for el in mylist:
  if not el[0] in dict.keys():
    dict[el[0]] = {}
  if not el[1] in dict[el[0]].keys():
    dict[el[0]][el[1]] = 1
  else:
    dict[el[0]][el[1]] += 1        
print (dict)

结果,我得到了:

代码语言:javascript
复制
{'academic': {'hacked': 1, 'lost device': 3}, 'energy': {'inside job': 1}, 'financial': {'hacked': 1}}
票数 1
EN

Stack Overflow用户

发布于 2019-11-15 01:20:23

使用setdefault -它很好:

代码语言:javascript
复制
x={}
for a,b in mylist:
   c=x.setdefault(a,{})
   c[b]=c.setdefault(b,0)+1
print(x)
票数 0
EN

Stack Overflow用户

发布于 2019-11-15 01:25:40

您可以使用Collections.Counter在一行中完成此操作,如下所示。这里,vals是元组的列表。

代码语言:javascript
复制
from collections import Counter
dict((k[0],{k[1]:v})for k, v in Counter(vals).items())

解决方案

代码语言:javascript
复制
from collections import Counter
vals = [('academic', 'hacked'), ('academic', 'lost device'), ('academic', 'lost device'), 
        ('academic', 'lost device'), ('energy', 'inside job'), ('financial', 'hacked')]

output = dict((k[0],{k[1]:v})for k, v in Counter(vals).items())
print(output)

结果

代码语言:javascript
复制
{'academic': {'hacked': 1, 'lost device': 3}, 'energy': {'inside job': 1}, 'financial': {'hacked': 1}}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58861769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档