python - 如何将字典键与模型 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']
解决方案
获取您选择的名称:
choice_text = Choice.objects.get(pk=choice_id)
所以你必须遍历你的 id,获取choice_text 并使用:
votes[choice_text] = votes.pop(choice_id)
将您的键重命名为相应的选项名称。
推荐阅读
- python - 比较两个不同大小的numpy数组的最佳方法
- html - 在 div 底部而不是 div 顶部显示框
- c# - 将数组中的元素右移 5
- c# - 如何将 OAuth 与 Office 365 报告 Web 服务结合使用
- c# - 为什么我不能在这里使用 SQLite 命令生成器?
- python - 使用多处理池在 python 中加速 TFLite 推理
- angular - 在 npm 上拆分和发布后如何维护 Angular 模块
- c# - 使用 C# 对象创建复杂的 JSON
- mql4 - MQL4 问题 如何在 EA 中打开多个订单
- docker - phpmyadmin 无法使用 docker-compose 连接到 mariadb:数据包乱序