辞書にリストから値の不均等な長さを追加

スクラッピココ:

私は辞書を持って、キーのは、以下のとおりです。

{'A', 'B', 'C', 'D'}

リスト値のいくつかの例:

1- [(33.0, 134), (54.0, 113), (21.0, 120)]
2- [(25.0, 153)]
3- [()]

私は順番に辞書のキーにリスト値を適用したいです。予想される出力、1-ケースになります。

{'A' : 33.0,
'B' : 134,
'C' : 54.0,
'D' : 113}

2-場合:

{'A' : 25.0,
'B' : 153,
'C' : NaN,
'D' : NaN}

の3-場合:

{'A' : NaN,
'B' : NaN,
'C' : NaN,
'D' : NaN}

これどうやってするの?

CDJB:

代替-辞書読解など'NaN'のためにnp.nanそれはあなたが後にしている価値だ場合。

>>> keys = ['A', 'B', 'C', 'D']

>>> l = [(33.0, 134), (54.0, 113), (21.0, 120)]
>>> dict(zip(keys,([x for sl in l for x in sl]+['NaN']*len(keys))[:len(keys)]))
{'A': 33.0, 'B': 134, 'C': 54.0, 'D': 113}

>>> l = [(25.0, 153)]
>>> dict(zip(keys,([x for sl in l for x in sl]+['NaN']*len(keys))[:len(keys)]))
{'A': 25.0, 'B': 153, 'C': 'NaN', 'D': 'NaN'}

>>> l = [(,)]
>>> dict(zip(keys,([x for sl in l for x in sl]+['NaN']*len(keys))[:len(keys)]))
{'A': 'NaN', 'B': 'NaN', 'C': 'NaN', 'D': 'NaN'}

説明:

私たちは、使用zip()サイズのキーのリストを圧縮するためnのリスト追加、タプルの平坦化リストでn 'NaN'最後に値をした後、最初のオフチョッピングn値を。dict()コンストラクタは、引数としてzip形式のリストを受け付けます。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=20214&siteId=1