【问题标题】:How to reduce number of python code?如何减少python代码的数量?
【发布时间】:2018-07-03 22:48:23
【问题描述】:

当元素在字典中不存在时如何减少代码数量?否则将其分配给对象。 python概念证明:

class MyClass:
    pass

key = "test python"
item = MyClass()
d = {}
if d.get(key) is None:
    d[key] = item
else:
    item = d[key]
print(item)

if else 语句可以去掉吗?

【问题讨论】:

  • 那么,当你做删除else时,你的测试用例会发生什么?对于所有情况,您得到相同的结果吗?至少测试密钥是否已经在字典中。
  • 您是否使用d.get(key) is None 来测试字典是否具有该键?如果是这样,那应该是key in d。 d.get(key) is None 不区分不存在的键和显式的 None。

标签: python dictionary coding-style refactoring


【解决方案1】:

你可以阅读python文档-> setdefault:

class MyClass:
    pass

key = 'test python'
item = MyClass()
d = {}
item = d.setdefault(key, item)

它更 Pythonic!!!!

【讨论】:

    【解决方案2】:

    在你开始提问之前阅读Documentation...

    你想用这个setdefault(key[, default])

    【讨论】:

      【解决方案3】:

      您可以为此使用dict.setdefault:

      key = "test python"
      item = MyClass()
      d = {}
      print(d.setdefault(key, item))
      

      【讨论】:

        【解决方案4】:

        也许看看使用defaultdict(来自集合)是否会有所帮助?

        我不确定你到底想做什么,但我认为这是相同的行为?

        from collections import defaultdict
        
        class MyClass:
            pass
        
        key = "test python"
        item = MyClass()
        d = defaultdict()
        d[key] = item
        print(item)
        

        与上述无关,我认为

        if not key in d:
        

        或

        if not d.get(key):
        

        可能更 Python 一点?

        【讨论】:

          猜你喜欢
          • 2018-12-08
          • 1970-01-01
          • 2020-06-16
          • 1970-01-01
          • 2021-09-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多