我有一个字典列表,我需要从中将所有字典值转换为列表列表,而无需更改顺序。
我使用了空列表,并尝试使用for循环附加字典值,但顺序不正确。
例如:
result = [{'Project': 'ABC','Employee': 'MNK','Project': 'ABC','Project': 'ABC'}]
我想要以下格式:
answer = [['ABC'],['MNK'],['ABC'],['ABC']]
我使用了以下代码:
answer =[]
for i,j in enumerate(result):
answer .append(result[i].values())
我得到的是
answer = [['MNK'],['ABC'],['ABC'],['ABC']]
预期答案是
answer = [['ABC'],['MNK'],['ABC'],['ABC']]
注意:我正在寻找给出预期答案的代码,我检查了其他问题,这些都与此无关。正确的建议和代码被接受。谢谢。
答案 0 :(得分:2)
根据您对新列表的评论:
使用map()
:
result = [{'T_Project': 'ABC','T_Employee': 'MNK','T_Project1': 'ABC','T_Project2': 'ABC'}]
print(list(map(lambda x: x.values(), result)))
使用list-comprehension
:
print(list(x.values() for x in result))
输出:
[dict_values(['ABC', 'MNK', 'ABC', 'ABC'])]
编辑:
Python 2.x :
from collections import OrderedDict
d = OrderedDict()
d['T_Project'] = 'ABC'
d['T_Employee'] = 'MNK'
d['T_Project1'] = 'ABC'
d['T_Project2'] = 'ABC'
print(d)
print(list(d.values()))
输出:
OrderedDict([('T_Project', 'ABC'), ('T_Employee', 'MNK'), ('T_Project1', 'ABC'), ('T_Project2', 'ABC')])
['ABC', 'MNK', 'ABC', 'ABC']
答案 1 :(得分:0)
我将假定您输入的问题输入词典错误,并且将其看起来像这样:
result = [
{'Project': 'ABC'},
{'Employee': 'MNK'},
{'Project': 'ABC'},
{'Project': 'ABC'}
]
x = [list(d.values()) for d in result]
print(x)
将产生您想要的[['ABC'], ['MNK'], ['ABC'], ['ABC']]