【问题标题】:Python del if in dictionary in one linePython del if 在一行中的字典中
【发布时间】:2012-03-11 17:50:50
【问题描述】:

是否有一种方法可以完成以下操作?

myDict = {}
if 'key' in myDic:
    del myDic['key']

谢谢

【问题讨论】:

标签: python dictionary del


【解决方案1】:

你可以写

myDict.pop(key, None)

【讨论】:

  • 只有在 'key' 在 myDic 中(与 myDict 不同)时才应该删除它
  • @MichelKeijzers:你真的认为这不是错字吗?
  • 如果不是,它将是一个空字典,尝试删除一个项目将是无用的。
  • 是的,这是一个不切实际的例子,但它是为了教学目的。它有帮助
【解决方案2】:

你会称这是一个单一的班轮:

>>> d={1:2}
>>> if 1 in d: del d[1]
... 
>>> d
{}

【讨论】:

  • 我称它不是一行,因为它是两行,只是以PEP 8 不允许的形式压缩成一行。我永远不会这样做的另外两个原因是(a)它没有那么短和漂亮; (b) 它需要两次而不是一次提及字典名称和键。相同的论点适用于 d[k] if k in d else vd.get(k, v)
【解决方案3】:

除了pop 方法之外,人们总是可以显式调用__delitem__ 方法——它的作用与del 相同,但它是作为表达式而不是作为语句来完成的。既然是表达式,可以和内联的“if”(Python版的C三元运算符)结合:

d = {1:2}

d.__delitem__(1) if 1 in d else None

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-06
    • 1970-01-01
    • 1970-01-01
    • 2018-02-25
    • 2019-04-18
    • 2013-12-09
    • 2019-05-08
    • 2021-11-15
    相关资源
    最近更新 更多