2012-08-24 48 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'}