当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python Lists转Nested Dictionary用法及代码示例


有时,在使用 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)



相关用法


注:本文由纯净天空筛选整理自manjeet_04大神的英文原创作品 Python – Convert Lists to Nested Dictionary。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。