Python – Unnest 单键嵌套字典列表
有时,在处理Python数据时,我们可能会遇到一个问题,即我们需要对所有具有单个键嵌套的字典进行取消嵌套,即单个键和值,并且可以轻松地直接指向外部键。这种问题在需要数据优化的领域很常见。让我们讨论可以执行此任务的某些方式。
Input : test_list = [{‘gfg’ : {‘data’ : 1}}, {‘is’ : {‘data’ : 5, ‘geeks’ : 7}}]
Output : {‘is’: 5, ‘gfg’: 1}
Input : test_list = [{‘gfg’ : {‘data’ : ‘best’}}]
Output : {‘gfg’: ‘best’}
方法 #1:使用循环 + items()
上述方法的组合可以用来解决这个问题。在此,我们迭代列表中的值,使用循环并使用 items() 提取所有字典项,并使用蛮力方法执行新字典创建。
# Python3 code to demonstrate working of
# Unnest single Key Nested Dictionary List
# Using loop + items()
# initializing list
test_list = [{'gfg' : {'data' : 1}}, {'is' : {'data' : 5}}, {'best' : {'data' : 4}}]
# printing original list
print("The original list is : " + str(test_list))
# initializing key
data_key = 'data'
# Unnest single Key Nested Dictionary List
# Using loop + items()
res = dict()
for sub in test_list:
for key, val in sub.items():
res[key] = sub[key][data_key]
# printing result
print("The constructed Dictionary list : " + str(res))
The original list is : [{‘gfg’: {‘data’: 1}}, {‘is’: {‘data’: 5}}, {‘best’: {‘data’: 4}}]
The constructed Dictionary list : {‘gfg’: 1, ‘best’: 4, ‘is’: 5}
方法#2:使用列表推导
这是可以执行此任务的另一种方式。在此,我们以类似的方法执行解决方案,但使用列表理解以速记方式。
# Python3 code to demonstrate working of
# Unnest single Key Nested Dictionary List
# Using list comprehension
# initializing list
test_list = [{'gfg' : {'data' : 1}}, {'is' : {'data' : 5}}, {'best' : {'data' : 4}}]
# printing original list
print("The original list is : " + str(test_list))
# initializing key
data_key = 'data'
# Unnest single Key Nested Dictionary List
# Using list comprehension
res = {x : y[data_key] for idx in test_list for x, y in idx.items()}
# printing result
print("The constructed Dictionary list : " + str(res))
The original list is : [{‘gfg’: {‘data’: 1}}, {‘is’: {‘data’: 5}}, {‘best’: {‘data’: 4}}]
The constructed Dictionary list : {‘gfg’: 1, ‘best’: 4, ‘is’: 5}