使用Python仅将值从字典列表转换为列表列表,而无需更改顺序

时间:2019-04-17 11:07:19

标签: python list dictionary

我有一个字典列表,我需要从中将所有字典值转换为列表列表,而无需更改顺序。

我使用了空列表,并尝试使用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']]

注意:我正在寻找给出预期答案的代码,我检查了其他问题,这些都与此无关。正确的建议和代码被接受。谢谢。

2 个答案:

答案 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'])]

pyFiddle

编辑

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']

pyFiddle 2.x

答案 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']]