Python – List 上的值嵌套分组
有时,在处理数据时,我们可能会遇到一个问题,即我们有字典列表形式的平面数据,我们需要根据 id 对这些裸字典进行分类。这可以应用于涉及数据的领域,例如 Web 开发和数据科学。让我们讨论一下可以执行此任务的特定方式。
方法:使用defaultdict() + setdefault()
+ 循环
上述功能的组合可用于执行此任务。这是可以执行此操作的粗暴方式。在此,我们使用用于嵌套记录形成的字典值初始化 defaultdict(),并使用 setdefault() 和条件填充数据。
# Python3 code to demonstrate working of
# Value nested grouping on List
# Using loop + setdefault() + defaultdict()
from collections import defaultdict
# initializing list
test_list = [{ 'value' : 'Fruit'},
{ 'tag' : 'Fruit', 'value' : 'mango'},
{ 'value' : 'Car'},
{ 'tag' : 'Car', 'value' : 'maruti'},
{ 'tag' : 'Fruit', 'value' : 'orange'},
{ 'tag' : 'Car', 'value' : 'city'}]
# printing original list
print("The original list is : " + str(test_list))
# Value nested grouping on List
# Using loop + setdefault() + defaultdict()
temp = defaultdict(dict)
res = {}
for sub in test_list:
type = sub['value']
if 'tag' in sub:
tag = sub['tag']
temp[tag].setdefault(type, temp[type])
else:
res[type] = temp[type]
# printing result
print("The dictionary after grouping : " + str(res))
输出 :
The original list is : [{‘value’: ‘Fruit’}, {‘tag’: ‘Fruit’, ‘value’: ‘mango’}, {‘value’: ‘Car’}, {‘tag’: ‘Car’, ‘value’: ‘maruti’}, {‘tag’: ‘Fruit’, ‘value’: ‘orange’}, {‘tag’: ‘Car’, ‘value’: ‘city’}]
The dictionary after grouping : {‘Fruit’: {‘mango’: {}, ‘orange’: {}}, ‘Car’: {‘city’: {}, ‘maruti’: {}}}