簡體   English   中英

如何計算列表中子列表的出現次數並將其顯示為 dict

[英]How can I count occurrences of sublists in a list and display them as dict

我有下一個清單:

lst = [["Orange", "Carrot"], ["Green", "Apple"], ["Yellow", "Banana"], ["Orange", "Pumpkin"], ["Green", "Apple"]]

我怎樣才能將它們顯示為以下字典?:

dict_sum = {'Orange': {'Carrot': 1, 'Pumpkin': 1}, 'Green': {'Apple': 2}, 'Yellow': {'Banana': 1}}

您可以使用Counterdefaultdict來構建字典:

from collections import defaultdict, Counter

lst = [["Orange", "Carrot"], ["Green", "Apple"], ["Yellow", "Banana"], ["Orange", "Pumpkin"], ["Green", "Apple"]]

d = defaultdict(Counter)

for key, v in lst:
    d[key][v] += 1

res = {k: dict(v) for k, v in d.items()}
print(res)

Output

{'Orange': {'Carrot': 1, 'Pumpkin': 1}, 'Green': {'Apple': 2}, 'Yellow': {'Banana': 1}}
lst = [["Orange", "Carrot"], ["Green", "Apple"], ["Yellow", "Banana"], ["Orange", "Pumpkin"], ["Green", "Apple"]] dict_sum = dict() for item in lst: color = item[0] vegetable = item[1] # search in dict_sum if color not in dict_sum: dict_sum[color] = dict() # search vegetable in color if vegetable not in dict_sum[color]: dict_sum[color][vegetable] = 0 # increase count dict_sum[color][vegetable] += 1 print(dict_sum)

這不是一個優雅的解決方案,但您可以遍歷列表並創建字典:

In [14]: lst = [["Orange", "Carrot"], ["Green", "Apple"], ["Yellow", "Banana"], ["Orange", "Pumpkin"], ["Green", "Apple"]]                                                        

In [15]: k = {}                                                                                                                                                                   

In [16]: for elem in lst: 
    ...:     if k.get(elem[0],None): 
    ...:         nested = k.get(elem[0]) 
    ...:         if nested.get(elem[1],None): 
    ...:             nested[elem[1]] = nested.get(elem[1])+1 
    ...:         else: 
    ...:             nested[elem[1]]=1 
    ...:     else: 
    ...:         k[elem[0]] = {elem[1]:1} 


{'Orange': {'Carrot': 1, 'Pumpkin': 1},
 'Green': {'Apple': 2},
 'Yellow': {'Banana': 1}}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM