2012-09-24 52 views
-3

我有類型的字典列表,像這樣:如何將字典值用作另一個字典中的鍵名?

[ 
    { 
     'flight_id': 'f123', 
     'pax': 234, 
     'airline': 'Foo Airways' 
    }, 
    { 
     'flight_id': 'f124', 
     'pax': 200, 
     'airline': 'Bar Airways' 
    } 
] 

我要動態地構建一個新的數據結構,看起來像這樣:

{ 
    'f123': {'pax': 234, 'airline': 'Foo Airways'}, 
    'f124': {'pax': 200, 'airline': 'Bar Airways'} 
} 

基本上,我需要一種方法來轉將字典值轉換爲新字典中的密鑰名稱。

任何幫助,將不勝感激。

謝謝。

+0

@acattle沒有。我是Python的新手。 我想知道,爲什麼downvotes?這不是一個「恰當」的編程問題,還是僅僅是因爲這些天要問專家級的問題? –

+2

不,你可以問你想要的任何問題(只要它符合SO的範圍),但如果你談論你所做的所有研究,任何嘗試或想法,那就更好了。這樣我們可以幫助你瞭解你出錯的地方,而不只是告訴你答案。這對我們來說更令人滿意,對你更有幫助。問題通常是「[不]顯示任何研究成果」(鼠標懸停在downvote按鈕上) – acattle

回答

4

您可以使用列表理解:

flights = dict((f.pop('flight_id'), f) for f in flights) 

這將取代之前的數據結構。

的Python 2.7+有字典內涵:

flights = {f.pop('flight_id'): f for f in flights} 
+0

比我的 –

+0

+1更好的答案,但這不是列表理解。 :^) – DSM

+0

@DSM:哦,因爲它是一個發電機。發電機公司:) – jdi

1
>>> d = [ 
...  { 
...   'flight_id': 'f123', 
...   'pax': 234, 
...   'airline': 'Foo Airways' 
...  }, 
...  { 
...   'flight_id': 'f124', 
...   'pax': 200, 
...   'airline': 'Bar Airways' 
...  } 
... ] 
>>> itms = [x.pop('flight_id') for x in d] 
>>> dict(zip(itms,d)) 
{'f124': {'pax': 200, 'airline': 'Bar Airways'}, 'f123': {'pax': 234, 'airline': 
'Foo Airways'}} 
相關問題