Django 排序时:'<';在';非类型';和';str';
我试图删除数组中的所有重复和空元素,然后对其进行排序Django 排序时:'<';在';非类型';和';str';,django,python-3.x,Django,Python 3.x,我试图删除数组中的所有重复和空元素,然后对其进行排序 cities = [js.city for js in company_jscollects] filter(None, cities) cities_unique = list(sorted(set(cities))) 但后来我犯了一个错误: Django版本:2.0.4 异常类型:TypeError 异常值: “您的过滤器(无,城市)没有做任何事情,因为过滤器(…)本身不会过滤列表,它会使用过滤的元素创建一个it
cities = [js.city for js in company_jscollects]
filter(None, cities)
cities_unique = list(sorted(set(cities)))
但后来我犯了一个错误:
Django版本:2.0.4
异常类型:TypeError
异常值:
“您的过滤器(无,城市)
没有做任何事情,因为过滤器(…)
本身不会过滤列表,它会使用过滤的元素创建一个iterable
您可以使用:
cities = [js.city for js in company_jscollects]
cities_unique = list(sorted(set(filter(None, cities))))
或者可能更优雅:
cities_unique = sorted({js.city for js in company_jscollects if js.city})
由于
排序(…)
总是返回一个列表,额外的列表(…)
只会导致更多的工作来构建一个列表。filter
不修改列表,您可能需要cities=filter(None,cities)
但在这种情况下,您最好将上面的行更改为cities=[js.city for js in company\u js如果js.city收集信息]