下のような辞書を持っている場合、どのように読むのが一番良いでしょうか?
- 部分キーを持つすべてのアイテムを選択します
1d
次に、そのキーに基づいてそれらのアイテムを削除します
c = {('1d','f1'):1.5,('1w','f1'):1.2,('1d','f2'):1.4}
ありがとう
下のような辞書を持っている場合、どのように読むのが一番良いでしょうか?
1d
次に、そのキーに基づいてそれらのアイテムを削除します
c = {('1d','f1'):1.5,('1w','f1'):1.2,('1d','f2'):1.4}
ありがとう
>>> 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
、代わりに (リストの代わりに反復子) を使用します。
>>> 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()
両方のバージョンで動作することに注意してください。
次の方法を検討してください
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}