[英]Convert nested lists to dictionary in python
我需要將嵌套列表result = [[450, 455, 458], [452, 454, 456, 457], [451, 453]]
轉換為字典,如:
{
0:
{
450: None,
455: 450,
458: 450
},
1: {
452: None,
454: 452,
456: 452,
457: 452
},
2: {
451: None,
453: 451
}
}
請看看這個並提供幫助:
result_group = {}
for sub_group in result:
group_count = 0
first_rel_item = 0
result_group[group_count] = dict()
for item in sub_group:
if item == sub_group[0]:
result_group[group_count][item] = None
first_rel_item = item
continue
result_group[group_count]['item'] = first_rel_face
group_count += 1
我搞砸了,因為我得到了關鍵錯誤:1 無法添加到字典中。
這是一種方式:
lst = [[450, 455, 458], [452, 454, 457], [451, 453]]
res = {i: {w: None if w == v[0] else v[0] for w in v}
for i, v in enumerate(lst)}
結果
{0: {450: None, 455: 450, 458: 450},
1: {452: None, 454: 452, 457: 452},
2: {451: None, 453: 451}}
說明
None
還是v[0]
。enumerate
提取嵌套列表的索引。試試這個:
result_group = {}
group_count = 0
for sub_group in result:
first_rel_item = 0
result_group[group_count] = {}
result_group[group_count][sub_group[0]] = None
previtem = sub_group[0]
for item in sub_group[1:]:
result_group[group_count][item] = previtem
group_count += 1
你可以在這里使用列表理解:
>>> result = [[450, 455, 458], [452, 454, 457], [451, 453]]
>>> dict(enumerate({**{i: a[0] for i in a[1:]}, **{a[0]: None}}
for a in result))
{0: {450: None, 455: 450, 458: 450},
1: {452: None, 454: 452, 457: 452},
2: {451: None, 453: 451}}
注意:這使用了 Python 3.5 中引入的“擴展”可迭代解包。 z = {**x, **y}
合並字典x
和y
。
每個a
是result
一個子列表。 您想使用a[0]
作為第 1 個及以上元素的值,使用 None 作為第 0 個元素。
這里的假設是您只希望子列表的第 0 個元素具有相應的 None 值。 (如果第 0 個元素在某處重復,它將使用第 0 個元素作為其值,如@jpp 的回答。)
# the nice solutions were already given, so by foot:
d = {}
result = [[450, 455, 458], [452, 454, 457], [451, 453]]
for idx,l in enumerate(result): # returns the index and the sublists data
rMin = min(l)
d[idx] = {} # create a inner dict at key idx
for i in l:
d[idx][i] = None if i == rMin else rMin # fill inner dicts keys
print(d)
輸出:
{0: {450: None, 455: 450, 458: 450},
1: {452: None, 454: 452, 457: 452},
2: {451: None, 453: 451}}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.