有時,在使用 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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。