Turning a list of dictionaries into a list of lists

前端 未结 4 1124
难免孤独
难免孤独 2021-01-20 22:55

I know this is possible with list comprehension but I can\'t seem to figure it out. Currently I have a list of dictionaries like so:

 [ {\'field1\': \'a\', \'fie         


        
相关标签:
4条回答
  • 2021-01-20 23:41

    You can try:

    [[x['field2'], x['field1']] for x in l]
    

    where l is your input list. The result for your data would be:

    [['b', 'a'], ['d', 'c'], ['f', 'e']]
    

    This way you ensure that the value for field2 comes before the value for field1

    0 讨论(0)
  • 2021-01-20 23:43

    You can use list comprehension

    Python 3

    >>>listdict = [ {'field1': 'a', 'field2': 'b'},
    ...             {'field1': 'c', 'field2': 'd'},
    ...             {'field1': 'e', 'field2': 'f'} ]
    
    >>>[[a for a in dict.values()] for dict in listdict]
    [['b', 'a'], ['d', 'c'], ['f', 'e']]
    

    Python 2

    >>>[dict.values() for dict in listdict]
    [['b', 'a'], ['d', 'c'], ['f', 'e']]
    
    0 讨论(0)
  • 2021-01-20 23:47

    Just return the dict.values() lists in Python 2, or convert the dictionary view to a list in Python 3:

    [d.values() for d in list_of_dicts]  # Python 2
    [list(d.values()) for d in list_of_dicts]  # Python 3
    

    Note that the values are not going to be in any specific order, because dictionaries are not ordered. If you expected them to be in a given order you'd have to add a sorting step.

    0 讨论(0)
  • 2021-01-20 23:48

    I'm not sure what ordering you want, but for no order you could do:

    list_ = [list(_.values()) for _ in dict_list]
    
    0 讨论(0)
提交回复
热议问题