目前我正在使用 Django 查询集并得到如下结果:
[{'week': 29, 'avg': 137.6}, {'week': 30, 'avg': 138.6}, {'week': 31, 'avg': 138.06666666666666}]
如您所见,它是一个字典列表。
我想简单地处理:
{29: 137.6, 30: 138.6, 31: 138.066}
我在思考这一切时遇到了一些麻烦。任何帮助,将不胜感激。 谢谢。
请您参考如下方法:
只需使用词典理解:
{ d['week'] : d['avg'] for d in data }
data 是您的词典列表。这会产生:
>>> { d['week'] : d['avg'] for d in data }
{29: 137.6, 30: 138.6, 31: 138.06666666666666}
字典理解因此将遍历 data,并且对于每个元素 d(字典),它将关联 d['week'](键),结果中有 d['avg'](值)。
如果它不是字典列表,但仍然是一个查询集,您应该 - 如 @JonClemens says - 使用以下表达式:
dict(queryset.values_list('week','avg'))
此处 values_list('week','avg') 将构造一个包含周作为第一个元素,平均值作为第二个元素的二元组迭代器。如果 dict(..) 构造函数获得一个二元组的可迭代对象,它将构造一个字典,其中每个元组的第一个元素是键,元组的第二个元素是关联的值。
