簡體   English   中英

python使用dict理解按項目選擇和刪除

[英]python pick and delete by item using dict comprehension

如果我有以下這樣的字典,什么是最好的方法

  1. 挑選所有具有部分鑰匙1d物品
  2. 然后根據該鍵刪除這些項目

    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及更低版本中,應使用generator代替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}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM