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})