python - 根据查询数据创建键值对

标签 python django dictionary

Python 查询数据库为

m = Request.objects.filter(type__contains='mega')

以及基于 m 的查询集

x = m.values('set', 'value')

它返回类似的值

[{'value': u'sasi', 'set': u'ITEM1'}, {'value': u'babu', 'set': u'ITEM1'},{'value': u'unni', 'set': u'ITEM2'},...]

我计划根据这些数据创建一个字典。所以它会像

{'ITEM1': [sasi, babu], 'ITEM2':[unni], 'ITEM3': [x, y, z] , ....}

如何将上述查询集转换为这种字典格式?大家有什么想法吗?提前致谢。

最佳答案

使用itertools.groupbydictionary comprehension :

>>> data = [
...     {'value': u'sasi', 'set': u'ITEM1'},
...     {'value': u'babu', 'set': u'ITEM1'},
...     {'value': u'unni', 'set': u'ITEM2'},
...     {'value': u'x', 'set': u'ITEM3'},
...     {'value': u'y', 'set': u'ITEM3'},
...     {'value': u'z', 'set': u'ITEM3'},
... ]
>>> 
>>> data = sorted(data, key=lambda d: d['set'])
>>> import itertools
>>> {key: list(d['value'] for d in grp)
...  for key, grp in itertools.groupby(data, key=lambda d: d['set'])}
{u'ITEM2': [u'unni'], u'ITEM3': [u'x', u'y', u'z'], u'ITEM1': [u'sasi', u'babu']}

如果查询集按set排序,则可以跳过sorted调用。

关于python - 根据查询数据创建键值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35501568/

相关文章:

python - Celery 为每个失败的任务发送邮件

c# - 包装字典以提高可读性?

c++ - 我需要什么类型的数据结构来链接到多个参数

python - DNNRegressor 训练输入多个标签

python - manage.py 不会在 Raspberry Pi 上的 Docker 中登录到 stdout/stderr

python - 使用 pip 从 Web 项目的 requirements.txt 安装时出错

Django:如何通过自定义 Django_Admin 动态过滤外键选择

ios - 如何快速将数组映射到字典中的键?

python - 如何修复 'Float' 对象没有属性 'exp'?

python - 使用 pymongo 时使用字典键作为 _id