-3

私はそのようなdictのリストを持っています:

[
    {
        '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'}
}

基本的に、辞書の値を新しい辞書のキー名に変換する方法が必要です。

どんな助けでもいただければ幸いです。

ありがとう。

4

2 に答える 2

4

リスト内包表記を使用できます。

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

これにより、以前のデータ構造が置き換えられます。

Python 2.7以降には、dictの内包表記があります。

flights = {f.pop('flight_id'): f for f in flights}
于 2012-09-24T00:50:42.343 に答える
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'}}
于 2012-09-24T00:48:36.630 に答える