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.groupby
和 dictionary 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/