【问题标题】:Python adding element to dict in own namePython以自​​己的名字将元素添加到dict
【发布时间】:2015-11-09 09:46:27
【问题描述】:

是否有 Python 方法可以以自己的名称添加/更新 dict 元素?

例如:

error = "Some error"
response['error'] = error

我希望

response.push(error)

push() 将执行上述等效操作,即以'error' 本身的名义将error 添加到response。我有一个合适的场景,而不是编写一大段代码。

【问题讨论】:

  • 不,因为没有理智的方法来获取传递的名称。
  • 哦.. 幸运的是,关于下一步自己编写这种方法的任何线索?
  • 做不到。函数是传递值,而不是变量名。
  • 我的意思是你可以创建自己的dict 类或挂钩一个像response.push("error") 这样接受参数的函数,并在该函数中访问 Holloway 所描述的全局变量。我认为你在这里是在一个滑坡上,但它是可能的,只是不是你想要的那样。

标签: python python-2.7 python-3.x dictionary


【解决方案1】:

这不是一个好方法,但您可以使用globals

>>> def updateDict(dict, value):
...     a = globals()[value]
...     dict[value] = a
... 
>>> response = {}
>>> error = "some error"
>>> updateDict(response, 'error')
>>> response
{'error': 'some error'}

我会认真考虑您是否需要这样做。这不太好,我怀疑它是否会在模块之间运行得很好(如果有的话)。

【讨论】:

    【解决方案2】:

    我在抓取页面和使用类时遇到了类似的问题。所以在你的情况下,你可以这样做:

    class MyError(Exception):
        def __init__(self, value):
            self.value = value
        def __str__(self):
            name = self.value.lower().replace(" ", "_")
            return name
    
    error = MyError("Some error")
    
    response = {}    
    
    response[error.__str__()] = error.value
    

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2014-10-21
      • 1970-01-01
      • 2021-12-10
      • 1970-01-01
      • 1970-01-01
      • 2018-12-06
      • 1970-01-01
      • 1970-01-01
      • 2017-04-08
      相关资源
      最近更新 更多