有时,在使用 Python 字典时,我们可能会遇到需要将列表转换为嵌套的问题,即每个列表值代表一个新的嵌套级别。此类问题可以在包括 Web 开发在内的许多领域中得到应用。让我们讨论一下执行此任务的特定方式。
在 Python 中将列表转换为嵌套字典
以下是将列表转换为嵌套字典的方法Python:
将列表转换为嵌套字典使用zip() + 列表理解
可以组合以上函数来执行此任务。在此,我们迭代一个压缩列表并使用以下命令渲染嵌套字典列表理解。三个列表中相应位置的每个元素都构成结果字典中的键值对,其中第一个列表提供最外面的键,第二个列表提供中间键,第三个列表提供值。
Python3
# initializing list
test_list1 = ["gfg", 'is', 'best']
test_list2 = ['ratings', 'price', 'score']
test_list3 = [5, 6, 7]
# printing original list
print("The original list 1 is : " + str(test_list1))
print("The original list 2 is : " + str(test_list2))
print("The original list 3 is : " + str(test_list3))
# Convert Lists to Nestings Dictionary
# Using list comprehension + zip()
res = [{a: {b: c}} for (a, b, c) in zip(test_list1, test_list2, test_list3)]
# printing result
print("The constructed dictionary : " + str(res))
The original list 1 is : ['gfg', 'is', 'best'] The original list 2 is : ['ratings', 'price', 'score'] The original list 3 is : [5, 6, 7] The constructed dictionary : [{'gfg': {'ratings': 5}}, {'is': {...
时间复杂度:在)
辅助空间:在)
在 Python 中将列表转换为嵌套字典使用for循环
在此示例中,Python 代码利用 for 循环来转换三个单独的列表 (test_list1
,test_list2
, 和test_list3
) 到嵌套字典 (res
)。三个列表中相应位置的每个元素都会在结果字典中构成一个键值对,其中来自的元素test_list1
作为最外层的键,元素来自test_list2
作为中间键,元素来自test_list3
作为值。
Python3
# initializing lists
test_list1 = ["gfg", 'is', 'best']
test_list2 = ['ratings', 'price', 'score']
test_list3 = [5, 6, 7]
# initializing dictionary
result_dict = {}
# printing original list
print("The original list 1 is : " + str(test_list1))
print("The original list 2 is : " + str(test_list2))
print("The original list 3 is : " + str(test_list3))
# iterating through the lists
for i in range(len(test_list1)):
sub_dict = {test_list2[i]: test_list3[i]}
result_dict[test_list1[i]] = sub_dict
# printing result
print("The constructed dictionary : " + str(result_dict))
The original list 1 is : ['gfg', 'is', 'best'] The original list 2 is : ['ratings', 'price', 'score'] The original list 3 is : [5, 6, 7] The constructed dictionary : {'gfg': {'ratings': 5}, 'is': {'pr...
时间复杂度:O(n),其中 n 是列表的长度
辅助空间:O(n),其中 n 是列表的长度
Python将列表转换为嵌套字典使用字典理解
在此示例中,Python 代码使用字典理解和zip()
函数创建一个嵌套字典(res
)来自三个列表(test_list1
,test_list2
, 和test_list3
)。三个列表中相应位置的每个元素都会在结果字典中构成一个键值对,其中来自的元素test_list1
作为最外层的键,元素来自test_list2
作为中间键,元素来自test_list3
作为值。
Python3
# initializing lists
test_list1 = ["gfg", 'is', 'best']
test_list2 = ['ratings', 'price', 'score']
test_list3 = [5, 6, 7]
# using dictionary comprehension to create a nested dictionary
res = {a: {b: c} for (a, b, c) in zip(test_list1, test_list2, test_list3)}
# printing original list
print("The original list 1 is : " + str(test_list1))
print("The original list 2 is : " + str(test_list2))
print("The original list 3 is : " + str(test_list3))
# printing the resulting dictionary
print("The constructed dictionary: ", res)
The original list 1 is : ['gfg', 'is', 'best'] The original list 2 is : ['ratings', 'price', 'score'] The original list 3 is : [5, 6, 7] The constructed dictionary: {'gfg': {'ratings': 5}, 'is': {'pr...
时间复杂度:在)
辅助空间:在)
在 Python 中将列表转换为嵌套字典使用 itertools 模块
在此示例中,Python 代码使用Itertools.cycle()创建一个循环遍历提供的列表的迭代器 (test_list1
,test_list2
, 和test_list3
)。然后它使用以下方法迭代列表的组合元素zip()
函数,创建一个嵌套字典(res
) 其中元素来自test_list1
作为最外层的键,元素来自test_list2
作为中间键,元素来自test_list3
作为值。
Python3
import itertools
# Initializing lists
test_list1 = ["gfg", 'is', 'best']
test_list2 = ['ratings', 'price', 'score']
test_list3 = [5, 6, 7]
# Creating an iterator that cycles through the lists
cycle_lists = itertools.cycle([test_list1, test_list2, test_list3])
# Initializing an empty dictionary
res = {}
# printing original list
print("The original list 1 is : " + str(test_list1))
print("The original list 2 is : " + str(test_list2))
print("The original list 3 is : " + str(test_list3))
# Iterating over the combined elements of the lists
for a, b, c in zip(next(cycle_lists), next(cycle_lists), next(cycle_lists)):
res[a] = {b: c}
# Printing the resulting dictionary
print("The constructed dictionary: ", res)
The original list 1 is : ['gfg', 'is', 'best'] The original list 2 is : ['ratings', 'price', 'score'] The original list 3 is : [5, 6, 7] The constructed dictionary: {'gfg': {'ratings': 5}, 'is': {'pr...
时间复杂度:在)
辅助空间:O(1)
相关用法
- Python List append()用法及代码示例
- Python List extend()用法及代码示例
- Python List insert()用法及代码示例
- Python List remove()用法及代码示例
- Python List index()用法及代码示例
- Python List count()用法及代码示例
- Python List pop()用法及代码示例
- Python List reverse()用法及代码示例
- Python List sort()用法及代码示例
- Python List copy()用法及代码示例
- Python List clear()用法及代码示例
- Python List cmp()用法及代码示例
- Python List len()用法及代码示例
- Python List max()用法及代码示例
- Python List min()用法及代码示例
- Python List list()用法及代码示例
- Python List remove方法用法及代码示例
- Python List insert方法用法及代码示例
- Python List copy方法用法及代码示例
- Python List append方法用法及代码示例
- Python List clear方法用法及代码示例
- Python List pop方法用法及代码示例
- Python List sort方法用法及代码示例
- Python List count方法用法及代码示例
- Python List index方法用法及代码示例
注:本文由纯净天空筛选整理自manjeet_04大神的英文原创作品 Python – Convert Lists to Nested Dictionary。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。