2

私は次のような配列を持っています:

foo foot oot
foo foot oot
bar bart art
bar bart art

私は辞書を持っています

{ foo : 1, bar :2, foot:34, bart:54, oot:123}

この出力のセットにマッピングまたは適用することを検討しています:

1 34 123
1 34 123
2 54 NaN
2 54 NaN

注意: 1 つの値が欠落しています。各列をスライスしてから、リスト内包を行うことを考えていましたが、これは間違っているように感じます。

4

2 に答える 2

2

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

>>> lis = [['foo', 'foot', 'oot'],
['foo', 'foot', 'oot'],
['bar', 'bart', 'art'],
['bar', 'bart', 'art']]
>>> dic = { 'foo' : 1, 'bar' :2, 'foot':34, 'bart':54, 'oot':123}
>>> nan = float('nan')
>>> [[dic.get(y,nan) for y in x] for x in lis]
[[1, 34, 123], [1, 34, 123], [2, 54, nan], [2, 54, nan]]

dict.get(key, default_value)key:が見つかった場合、キーに関連する値を返します。それ以外の場合は を返しますdefault_value

NaNPython で直接使用することはできませんfloat('nan')

于 2013-07-01T03:00:49.020 に答える