【问题标题】:How to remove a key/value pair in python dictionary?如何删除python字典中的键/值对?
【发布时间】:2019-05-04 03:14:31
【问题描述】:

假设我有一本这样的字典:

d = {'ben' : 10, 'kim' : 20, 'bob' : 9}

有没有办法从字典中删除像('bob',9) 这样的一对? 我已经知道d.pop('bob'),但即使该值不是9,也会删除该对。

现在我能想到的唯一方法是这样的:

if (d.get('bob', None) == 9):
    d.pop('bob')

但是有没有更简单的方法?可能根本不使用if

【问题讨论】:

  • 不……就是这样……
  • 你可以删除None,这是默认的if d.get('bob') == 9:

标签: python dictionary key-value


【解决方案1】:

pop 也返回该值,因此在性能方面(尽管可以忽略)和可读性方面,使用del 可能会更好。

除此之外,我认为没有比这更容易/更好的事情了。

from timeit import Timer


def _del():
    d = {'a': 1}
    del d['a']


def _pop():
    d = {'a': 1}
    d.pop('a')

print(min(Timer(_del).repeat(5000, 5000)))
# 0.0005624240000000613
print(min(Timer(_pop).repeat(5000, 5000)))
# 0.0007729860000003086

【讨论】:

    【解决方案2】:

    你要在这里执行两个操作

    1) 您想测试条件 d['bob']==9。 2)如果第一个答案是真的,你想删除键和值。

    所以我们不能完全省略需要使用 if 的测试部分。但是我们当然可以一行完成。

    d.pop('bob') if d.get('bob')==9 else None

    【讨论】:

    • 嗯...从技术上讲,您也可以将if d.get('bob') == 9: del d['bob'] 写在一行中 - 所以我不确定除了使用if/`else 使语言复杂化之外,这有什么意义?
    猜你喜欢
    • 1970-01-01
    • 2015-12-27
    • 2014-05-23
    • 1970-01-01
    • 2012-07-01
    • 2014-09-02
    • 1970-01-01
    相关资源
    最近更新 更多