我有一个类似于下面的列表:
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。如何用每个 ID 对应的 choice_text
替换字典的键名?
我想最终得到一个如下所示的字典:
{'id=1 的choice_text':3, 'id=2 的choice_text':2, 'id=3 的choice_text':1}
编辑:另外,如果我想对已有的列表执行相同的程序怎么办。
my_list = ['1', '2', '1', '3', '2', '1']
像这样:
another_list = ['id=1 的选择文本', 'id=2 的选择文本', 'id=1 的选择文本', 'id=3 的选择文本', 'id=2 的选择文本', ' id=1'的选择文本]
最佳答案
获取您选择的名称:
choice_text = Choice.objects.get(pk=choice_id)
因此您必须遍历您的 ID,获取 choice_text 并使用:
投票[choice_text] = votes.pop(choice_id)
将您的键重命名为相应的选择名称。
关于python - 如何将字典键与模型 ID 匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51062760/