目前我正在使用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}
我在整个过程中遇到了一些麻烦。任何帮助,将不胜感激。 谢谢。
答案 0 :(得分:8)
只需使用字典理解:
{ 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')
将构造一个可重复的2元组,其中包含作为第一个元素的周,以及作为第二个元素的平均值。如果dict(..)
构造函数获得2元组的可迭代,它将构造一个字典,其中每个元组的第一个元素是键,元组的第二个元素是相关值。