2012-08-24 110 views
-1

我有持有对键/值的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

回答

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作为变量名,因为它阴影在内置的功能。此外,正如您所看到的,我已经使用列表理解来构建带有(键,值)元组的列表,然后可以将它们传递给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()) 
+3

您可以更改如果你喜欢,将理解列入一个生成器表达式。在这种情况下,差异可能是最小的,但似乎是不错的做法。 – mgilson

+0

@mgilson:好点,我已经更新了答案。 –

+1

在Python 3中,您可以使用dict理解:'my_dict = {k:v ['value'] for k,v in lst [0] .items()}' – halex

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'} 
相关问题