首页 > 解决方案 > 从计算元组项出现次数的元组创建嵌套字典

问题描述

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

[('academic', 'hacked'), ('academic', 'lost device'), ('academic', 'lost device'), ('academic', 'lost device'), ('energy', 'inside job'), ('financial', 'hacked')]

期望的输出:

{'academic': {'lost device': 3, 'hacked': 1}, 'energy': {'inside job': 1}, 'financial': {'hacked': 1}}

标签: pythonpython-3.xdictionarynestedtuples

解决方案


这不是pythonic的方式,但至少它正在工作

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)

结果我得到:

{'academic': {'hacked': 1, 'lost device': 3}, 'energy': {'inside job': 1}, 'financial': {'hacked': 1}}

推荐阅读