python使用dict理解按项目选择和删除

时间:2013-06-13 09:09:05

标签: python dictionary

如果我有一个如下所示的字典,

的最佳方法是什么
  1. 选择所有具有部分密钥1d
  2. 的项目
  3. 然后根据该键删除这些项目

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

  4. 由于

3 个答案:

答案 0 :(得分: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(迭代器而不是列表)而不是

答案 1 :(得分: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()适用于两个版本。

答案 2 :(得分: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及更低版本中应该使用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}