列表到每个键有多个值的字典

时间:2012-08-24 17:44:31

标签: python list dictionary type-conversion

我有一个包含键/值对的Python列表:

list = [ {'A': {'value': '2h25m'}, 'B': {'value': '2:45 AM'}, 
          'C': {'value': 'LAX'}, 'D': {'value': '+0100'}} ]

我想将列表转换为这样的字典:

d = {'A': '2h25m', 'B': '2:45 AM', 'C': 'LAX', 'D':'+0100'}

THKS

2 个答案:

答案 0 :(得分:3)

lst = [ {'A': {'value': '2h25m'}, 'B': {'value': '2:45 AM'}, 'C': {'value': 'LAX'}, 'D': {'value': '+0100'}} ]
my_dict = dict([(k, v['value']) for k, v in lst[0].items()])

首先,不要使用list作为变量名,因为它会影响内置的list()函数。此外,正如您所看到的,我使用列表推导来构建带有(键,值)元组的列表,然后可以将其传递给dict()函数以创建所需的字典。

正如mgilson指出的那样,你也可以使用生成器表达式而不是列表推导:

lst = [ {'A': {'value': '2h25m'}, 'B': {'value': '2:45 AM'}, 'C': {'value': 'LAX'}, 'D': {'value': '+0100'}} ]
my_dict = dict((k, v['value']) for k, v in lst[0].items())

答案 1 :(得分:0)

您可以在更高版本的Python中使用dict comprehension

In [30]: lst = [ {'A': {'value': '2h25m'}, 'B': {'value': '2:45 AM'}, 
    ...:           'C': {'value': 'LAX'}, 'D': {'value': '+0100'}} ]

In [31]: {k: v['value'] for k, v in lst[0].items()}
Out[31]: {'A': '2h25m', 'B': '2:45 AM', 'C': 'LAX', 'D': '+0100'}