如果我有一本像下面这样的字典,最好的方法是什么
- 选择所有具有部分键的项目
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 comprehension
>>> 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}