我想将词典列表转换为列表列表。
从这里。
d = [{'B': 0.65, 'E': 0.55, 'C': 0.31},
{'A': 0.87, 'D': 0.67, 'E': 0.41},
{'B': 0.88, 'D': 0.72, 'E': 0.69},
{'B': 0.84, 'E': 0.78, 'A': 0.64},
{'A': 0.71, 'B': 0.62, 'D': 0.32}]
收件人
[['B', 0.65, 'E', 0.55, 'C', 0.31],
['A', 0.87, 'D', 0.67, 'E', 0.41],
['B', 0.88, 'D', 0.72, 'E', 0.69],
['B', 0.84, 'E', 0.78, 'A', 0.64],
['A', 0.71, 'B', 0.62, 'D', 0.32]]
我可以从
获得此输出l=[]
for i in range(len(d)):
temp=[]
[temp.extend([k,v]) for k,v in d[i].items()]
l.append(temp)
我的问题是:
答案 0 :(得分:3)
由于您使用的是python 3.6.7和python dictionaries are insertion ordered in python 3.6+,因此可以使用itertools.chain
获得所需的结果:
from itertools import chain
print([list(chain.from_iterable(x.items())) for x in d])
#[['B', 0.65, 'E', 0.55, 'C', 0.31],
# ['A', 0.87, 'D', 0.67, 'E', 0.41],
# ['B', 0.88, 'D', 0.72, 'E', 0.69],
# ['B', 0.84, 'E', 0.78, 'A', 0.64],
# ['A', 0.71, 'B', 0.62, 'D', 0.32]]
答案 1 :(得分:2)
您可以使用列表理解:
result = [[i for b in c.items() for i in b] for c in d]
输出:
[['B', 0.65, 'E', 0.55, 'C', 0.31],
['A', 0.87, 'D', 0.67, 'E', 0.41],
['B', 0.88, 'D', 0.72, 'E', 0.69],
['B', 0.84, 'E', 0.78, 'A', 0.64],
['A', 0.71, 'B', 0.62, 'D', 0.32]]
答案 2 :(得分:1)
使用lambda可以这样做
d = [{'B': 0.65, 'E': 0.55, 'C': 0.31},
{'A': 0.87, 'D': 0.67, 'E': 0.41},
{'B': 0.88, 'D': 0.72, 'E': 0.69},
{'B': 0.84, 'E': 0.78, 'A': 0.64},
{'A': 0.71, 'B': 0.62, 'D': 0.32}]
d1=list(map(lambda x: [j for i in x.items() for j in i], d))
print(d1)
"""
output
[['B', 0.65, 'E', 0.55, 'C', 0.31],
['A', 0.87, 'D', 0.67, 'E', 0.41],
['B', 0.88, 'D', 0.72, 'E', 0.69],
['B', 0.84, 'E', 0.78, 'A', 0.64],
['A', 0.71, 'B', 0.62, 'D', 0.32]]
"""