Python 筛选重复项列表
可能重复:Python 筛选重复项列表,python,list,filter,Python,List,Filter,可能重复: 我有一个Python脚本: routes = Trayect.objects.extra(where=['point_id IN (10,59)']) for route in routes: print route 我得到的答复是: 六, 106 114 110 118 158 210 110 102 105 110 120 195 106 正如您所注意到的,“110”路线重复3次,“106”路线重复2次 我如何才能只获得重复的数字 我只想要110和106,不要其他的
我有一个Python脚本:
routes = Trayect.objects.extra(where=['point_id IN (10,59)'])
for route in routes:
print route
我得到的答复是:
六,
106
114
110
118
158
210
110
102
105
110
120
195
106
正如您所注意到的,“110”路线重复3次,“106”路线重复2次
我如何才能只获得重复的数字
我只想要110和106,不要其他的。仅此而已:
106
110
我不是以英语为母语的人,我正在学习python。谢谢
***列表中的对象是字符串是否需要类似的内容
In [1]: s = "6 106 114 110 118 158 210 110 102 105 110 120 195 106"
In [2]: l = s.split()
In [3]: [x for x in l if l.count(x) > 1]
Out[3]: ['106', '110', '110', '110', '106']
In [4]: set([x for x in l if l.count(x) > 1])
Out[4]: set(['106', '110'])
你需要这样的东西吗
In [1]: s = "6 106 114 110 118 158 210 110 102 105 110 120 195 106"
In [2]: l = s.split()
In [3]: [x for x in l if l.count(x) > 1]
Out[3]: ['106', '110', '110', '110', '106']
In [4]: set([x for x in l if l.count(x) > 1])
Out[4]: set(['106', '110'])
这可能是最简单的方法,即使
路由
中有许多项,也很有效:
from collections import Counter
counts = Counter(routes)
multi_routes = [i for i in counts if counts[i] > 1]
示例用法(使用数字,但这适用于哈希类型,例如字符串):
这可能是最简单的方法,即使
路由
中有许多项,也很有效:
from collections import Counter
counts = Counter(routes)
multi_routes = [i for i in counts if counts[i] > 1]
示例用法(使用数字,但这适用于哈希类型,例如字符串):
秩序重要吗?您需要
106110
还是110106
也很好?订单重要吗?您需要106110
还是110106
也很好?列表中的对象是字符串,这也适用于字符串?我使用一个查询列表:routes=Trayect.objects.extra(其中=['point\u id in(10,59)'))。这是我的问题吗?列表中的对象是字符串,这也适用于字符串?我使用一个查询列表:routes=Trayect.objects.extra(其中=['point_id in(10,59)])。这是我的问题吗?对于一个包含n条路由的列表,这将花费大约O(n^2)时间,如果路由
很大,这可能会很快变得无效。对于包含n条路由的列表,这将花费大约O(n^2)时间,如果路由
很大,这可能会很快变得无效。这不起作用,可能是因为我的查询结果?没有错误,只有一个空列表[]试试计数器(str(i)代表路由中的i)
然后。@ErnestoRuizEscorcia:如果路由
不是列表,那么在循环一次之后(比如你的打印
循环),可能什么都没有了(agotamiento)。你也可以尝试routes=list(Trayect.objects.extra(where=['point_id IN(10,59)])
,或者删除print
循环。得到这个:Counter({'110':3,'210':1,'195':1,'158':1,'120':1,'261':1,'6':1,'102':1,'106':2,'118':1,'105':1})它不工作,可能是因为我有一个查询吗?没有错误,只有一个空列表[]试试计数器(str(i)代表路由中的i)
然后。@ErnestoRuizEscorcia:如果路由
不是列表,那么在循环一次之后(比如你的打印
循环),可能什么都没有了(agotamiento)。你也可以尝试routes=list(Trayect.objects.extra(where=['point_id IN(10,59)])
,或者删除print
循环。得到这个:计数器({'110':3,'210':1,'195':1,'158':1,'120':1,'261':1,'6':1,'102':1,'106':2,'118':1,'105':1})