对数据库的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] , ....}
如何将上述查询集转换为此字典格式?伙计们好吗?提前致谢。
答案 0 :(得分:4)
使用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']}
如果查询集按sorted
排序,则可以跳过set
来电。
答案 1 :(得分:1)
from collections import defaultdict
data = defaultdict(list)
for item in x:
data[item['set']].append(item['value'])