【问题标题】:Python: How to query a dictionary using a variable as a keyPython:如何使用变量作为键查询字典
【发布时间】:2021-10-31 07:30:08
【问题描述】:

我有一个来自 Django 模型的列表,它可以包含来自模型的任何键的 dict_items。 例如。我可以使用函数从同一模型中获得具有“国家”属性或“名称”属性的列表。

x = dict_items([(<country: US>, 1), (<country: UK>, 1), (<country: Australia>, 2), (<country: Canada>, 1)])
x = dict_items([(<name: John>, 10), (<name: Jane>, 15), (<name: Smith>, 20), (<name: Jess>, 1)])

现在,我正在尝试构建另一个函数来清理密钥,基本上是 (&lt;country: US&gt;, 1){'key': 'US', 'val': 1}

    def pctTop5 (dict, keyy):
        pList = []
        for (key,value) in dict:
            pdict = {}
            pdict['key'] = key.keyy
            pdict['val'] = value
            pList.append(pdict)
        df = pandas.DataFrame(pList)
        return df

但是,我收到以下错误:

'countryModel' object has no attribute 'keyy'

这里的'countryModel'对象是django模型,它显然没有一个叫做'keyy'的属性。

传递变量以查询 dict 键的正确方法是什么?我需要将变量作为键传递,以重用该函数是不同的视图。

我尝试搜索,但大多数答案是使用变量创建字典列表,但找不到任何要查询的。

TIA

【问题讨论】:

  • 你能分享你的countryModel吗?
  • class countryModel(models.Model): country = models.CharField(max_length=100)continent = models.ForeignKey(continent, on_delete=models.CASCADE) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) class Meta: ordering = ('country',) def __str__(self): return self.country
  • 那么dict参数长什么样,keyy的值是多少?
  • countryModel 和 nameModel 在另一个模型中被用作外键...... keyy 可以是国家或名称......在这种情况下 countryModel.country
  • 您能否提供示例输入和预期输出。请edit提问。

标签: python django dictionary


【解决方案1】:

谢谢大家!

有人写了几分钟 getattr() 然后删除了它。我尝试将key.keyy 更改为getattr(key, keyy),它解决了问题。

谢谢

【讨论】:

    【解决方案2】:

    请编辑问题并添加产生错误的调用。

    我认为问题在于你如何调用字典,而不是 key.keyy 使用 key[keyy]

    【讨论】:

      猜你喜欢
      • 2018-10-30
      • 1970-01-01
      • 2014-02-05
      • 2012-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多