[英]python pick and delete by item using dict comprehension
如果我有以下這樣的字典,什么是最好的方法
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及更低版本中,應使用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.