【问题标题】:Passing argument from a list从列表中传递参数
【发布时间】:2011-11-30 22:51:30
【问题描述】:

我有一个正在使用的函数,我需要向它传递一个参数列表,但是,当我尝试传递该列表时它会出错,因为它无法散列。

这里讨论的函数是 Django Queryset 上的 values() 方法,但我认为这是一个更一般的 python 问题。

所以我有:

values_list = ['arg1', 'arg2', 'arg3']
models.MyModel.objects.values(values_list).all()

当我尝试运行代码时,这会给出错误unhashable type: 'list'。 假设我无法更改 values 方法,如何以正常方式将此列表添加到参数列表中?

for arg in values_list:
  queryset = MyModel.objects.values(arg)

【问题讨论】:

    标签: python django list


    【解决方案1】:

    你需要使用list unpacking

    models.MyModel.objects.values(*values_list).all()
    

    (注意星号)

    【讨论】:

      【解决方案2】:

      你能用元组代替列表吗?元组是可散列的。

      【讨论】:

        【解决方案3】:

        将 values_list 设为元组而不是列表是有意义的,但如果您无法更改 values 方法,则可以使用列表解包。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-08-04
          • 1970-01-01
          • 2022-01-08
          • 1970-01-01
          • 2017-08-19
          • 2016-09-05
          • 1970-01-01
          相关资源
          最近更新 更多