首页 > 解决方案 > 如何将字典键与模型 ID 匹配

问题描述

我有一个类似于以下的列表: my_list = ['1', '2', '1', '3', '2', '1']

这些是投票,每个投票对应于该模型中的一个 id,其中包含投票的选择:

class Choice(models.Model):
    question = models.ForeignKey(Poll, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)

我正在使用Counter来计算选票,最终得到以下结果:

>>>votes = Counter(my_list)
>>>print(votes)
Counter({'1': 3, '2': 2, '3': 1})

此字典中的每个键对应于Choice模型中的一个 ID。如何将字典的键名替换choice_text为每个 ID 对应的键名?我想最终得到一个如下所示的字典:

{'choice_text for id=1':3, 'choice_text for id=2':2, 'choice_text for id=3':1}

编辑:另外,如果我想对我已经拥有的列表执行相同的程序怎么办。

my_list = ['1', '2', '1', '3', '2', '1']

像这样:

another_list = ['choice_text for id=1', 'choice_text for id=2', 'choice_text for id=1', 'choice_text for id=3', 'choice_text for id=2', 'choice_text for id=1']

标签: pythondjangodjango-models

解决方案


获取您选择的名称:

choice_text = Choice.objects.get(pk=choice_id)

所以你必须遍历你的 id,获取choice_text 并使用:

votes[choice_text] = votes.pop(choice_id) 将您的键重命名为相应的选项名称。


推荐阅读