Python 将dict转换为嵌套列表,在每个子列表中插入键
我有一个解决这个问题的办法,但我很好奇是否有更好的办法。 我有这样一句话:Python 将dict转换为嵌套列表,在每个子列表中插入键,python,dictionary,python-3.5,Python,Dictionary,Python 3.5,我有一个解决这个问题的办法,但我很好奇是否有更好的办法。 我有这样一句话: dict1 = { 'key1':[['value1','value2','value3'],['value4','value5','value6']], 'key2':[['value7','value8','value9'],['value10','value11','value12']], 'key3':[['value13','value14','value15'],['value16','value17','v
dict1 = {
'key1':[['value1','value2','value3'],['value4','value5','value6']],
'key2':[['value7','value8','value9'],['value10','value11','value12']],
'key3':[['value13','value14','value15'],['value16','value17','value18']]}
nestedlist = [
['value1','value2','key1','value3'],['value4','value5','key1','value6'],
['value7','value8','key1','value9'],['value10','value11','key2','value12'],
['value13','value14','key2','value15'],['value16','value17','key2','value18'],
['value10','value11','key3','value12'],['value13','value14','key3','value15'],
['value16','value17','key3','value18']]
我想将其转换为嵌套列表,并将键插入新的子列表,如下所示:
dict1 = {
'key1':[['value1','value2','value3'],['value4','value5','value6']],
'key2':[['value7','value8','value9'],['value10','value11','value12']],
'key3':[['value13','value14','value15'],['value16','value17','value18']]}
nestedlist = [
['value1','value2','key1','value3'],['value4','value5','key1','value6'],
['value7','value8','key1','value9'],['value10','value11','key2','value12'],
['value13','value14','key2','value15'],['value16','value17','key2','value18'],
['value10','value11','key3','value12'],['value13','value14','key3','value15'],
['value16','value17','key3','value18']]
我用以下方法解决这个问题:
keys = [*dict1]
newlist = []
for item in keys:
for item2 in dict1[item]:
item2.insert(2,item)
newlist.append(item2)
那么,我该如何改进这段代码呢?我也会这样做。这里显示的唯一区别是:
result = []
for k, l in dict1.items():
for ll in l:
ll.insert(2, k)
result.append(ll)
无需对dict1进行列表解包或进行[]访问。items返回一个元组列表,其中包含dict的每个键和值。我也会这样做。这里显示的唯一区别是:
result = []
for k, l in dict1.items():
for ll in l:
ll.insert(2, k)
result.append(ll)
无需对dict1进行列表解包或进行[]访问。items返回一个元组列表,其中包含dict的每个键和值。这里有一种通过列表理解的方法:
res = [[w[0], w[1], k, w[2]] for k, v in dict1.items() for w in v]
# [['value1', 'value2', 'key1', 'value3'],
# ['value4', 'value5', 'key1', 'value6'],
# ['value7', 'value8', 'key2', 'value9'],
# ['value10', 'value11', 'key2', 'value12'],
# ['value13', 'value14', 'key3', 'value15'],
# ['value16', 'value17', 'key3', 'value18']]
下面是通过列表理解的一种方法:
res = [[w[0], w[1], k, w[2]] for k, v in dict1.items() for w in v]
# [['value1', 'value2', 'key1', 'value3'],
# ['value4', 'value5', 'key1', 'value6'],
# ['value7', 'value8', 'key2', 'value9'],
# ['value10', 'value11', 'key2', 'value12'],
# ['value13', 'value14', 'key3', 'value15'],
# ['value16', 'value17', 'key3', 'value18']]
这个方法是最快的,我会给你一个正确的答案:我一开始试着理解列表,但由于某种原因,即使我以前做过多嵌套列表比较,也无法理解。谢谢你发布这个方法是最快的,我会给你一个正确的答案:我一开始试着理解列表,但由于某种原因,即使我以前做过多嵌套列表比较,也无法理解。谢谢你发表这篇文章也许你可以用list、map和lambdas做一些事情,但我不是在一台有python的机器附近测试它也许你可以用list、map和lambdas做一些事情,但我不是在一台有python的机器附近测试它