0

下のような辞書を持っている場合、どのように読むのが一番良いでしょうか?

  1. 部分キーを持つすべてのアイテムを選択します1d
  2. 次に、そのキーに基づいてそれらのアイテムを削除します

    c = {('1d','f1'):1.5,('1w','f1'):1.2,('1d','f2'):1.4}

ありがとう

4

3 に答える 3

6
>>> c = {('1d','f1'):1.5,('1w','f1'):1.2,('1d','f2'):1.4}
>>> {k: v for k, v in c.items() if k[0] != '1d'}
{('1w', 'f1'): 1.2}

一般的な場合に使用しますif '1d' not in k。Python 2.x ではdict.iteritems、代わりに (リストの代わりに反復子) を使用します。

于 2013-06-13T09:10:28.317 に答える
6
>>> c = {('1d','f1'):1.5,('1w','f1'):1.2,('1d','f2'):1.4}
>>> {k: v for k, v in c.iteritems() if '1d' not in k}
{('1w', 'f1'): 1.2}

py2.x ではc.iteritems()イテレータを返すので、py3.x ではc.items().

c.items()両方のバージョンで動作することに注意してください。

于 2013-06-13T09:10:56.393 に答える
2

次の方法を検討してください

Python 2.7以降では、dict内包表記を使用できます

>>> c = {('1d','f1'):1.5,('1w','f1'):1.2,('1d','f2'):1.4}
>>> {k: v for k, v in c.items() if '1d' not in k}
{('1w', 'f1'): 1.2}

Python 2.6 以前では、dict の代わりにジェネレーターを使用する必要があります

>>> c = {('1d','f1'):1.5,('1w','f1'):1.2,('1d','f2'):1.4}
>>> dict((k, v) for k, v in c.iteritems() if '1d' not in k)
{('1w', 'f1'): 1.2}
于 2013-06-13T09:15:32.833 に答える