我有一個由串列串列組成的結構。我想將它轉換為一個字典,其中大小為 1 的陣列是鍵,陣列中的后續項(陣列大小為 2)是鍵 - 鍵的值。大小為 1 的陣列中的每個專案都將是一個新鍵。
例如:
串列串列:
[
[
"key1"
],
[
"name1",
"value1"
],
[
"name2",
"value2"
],
[
"key2"
],
[
"name1",
"value1"
],
[
"name2",
"value2"
],
[
"key3"
],
[
"name1",
"value1"
],
[
"name2",
"value2"
],
[
"key4"
],
[
"name1",
"value1"
],
[
"name2",
"value2"
]
]
所需的字典轉換:
{
"key1": {
"name1": "value1",
"name2": "value2"
},
"key2": {
"name1": "value1",
"name2": "value2"
},
"key3": {
"name1": "value1",
"name2": "value2"
},
"key4": {
"name1": "value1",
"name2": "value2"
}
}
uj5u.com熱心網友回復:
這是我想到的解決方案,可以解決您的問題:
import json
myList = [
[
"key1"
],
[
"name1",
"value1"
],
[
"name2",
"value2"
],
[
"key2"
],
[
"name1",
"value1"
],
[
"name2",
"value2"
],
[
"key3"
],
[
"name1",
"value1"
],
[
"name2",
"value2"
],
[
"key4"
],
[
"name1",
"value1"
],
[
"name2",
"value2"
]
]
key = 0
value = 0
myDict = dict()
for item in myList:
if len(item) == 1:
myDict[item[0]] = dict()
key = myList.index(item)
if len(item) == 2 and value == 0:
myDict[myList[key][0]][item[0]] = item[1]
if len(item) == 2 and value == 1:
myDict[myList[key][0]][item[0]] = item[1]
value = 0
print(json.dumps(myDict, indent=4))
輸出:
{
"key1": {
"name1": "value1",
"name2": "value2"
},
"key2": {
"name1": "value1",
"name2": "value2"
},
"key3": {
"name1": "value1",
"name2": "value2"
},
"key4": {
"name1": "value1",
"name2": "value2"
}
}
uj5u.com熱心網友回復:
所以你想要的第一件事就是把這個串列變成一個對串列的好方法。
在這個答案中給出了一個規范的解決方案
(如果你不習慣這種表示法,這有點晦澀難懂——我不打算在這里討論它,但值得深入研究它為什么起作用!)
所以你可以定義一個函式來將你的串列轉換成對,如下所示:
def pairs(it):
return zip(it[::2], it[1::2])
現在你只需要一個 dict 理解,記住你需要從它當前所在的串列中提取關鍵元素:
result = {key[0]: val for key, val in pairs(input_list)}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/526850.html
上一篇:如何訪問字典鍵內的串列中的專案?
