如何在迭代期间使用set()?

时间:2014-03-09 15:54:47

标签: python

如何在迭代期间使用set()?我仍然有单一价值。

data = {'mynumber': set()}

example = Example.objects.filter(user=request.user)
for e in example:
    data['mynumber'].add(e.mynumber)
    print data #{'mynumber': set([15.0])}

2 个答案:

答案 0 :(得分:1)

尝试使用setdefault

当您的条件满足时,以下代码段将为该数字或键创建一个空集,因此如果它已经存在则会创建,否则它将重复使用:

data.setdefault('mynumber', set())

答案 1 :(得分:0)

基于原始修改

您要添加一组mynumber,其中只能包含唯一值,django查询Example.objects.filter(mynumber=5)的结果只包含mynumber为5的项目...因此,你只会得到一个空集(没有查询结果)或一个包含5(一个或多个结果)的集合。


注意

在您跟踪代码以检查您是否获得了您期望的值之后,您可以摆脱循环并将代码编写为:

data = {'mynumber': set(Example.objects.filter(user=request.user).values_list('mynumber'))