1

可能重复:
在 Python 列表中查找并列出重复项

我在 Python 中有这个脚本:

routes = Trayect.objects.extra(where=['point_id IN (10,59)'])

for route in routes:
    print route

我得到这个回应:

6 106 114 110 118 158 210 110 102 105 110 120 195 106

正如您所注意到的,“110”路线重复了 3 次,而“106”路线重复了 2 次。

我怎样才能只获得重复的数字?

我只想要110106,而不想要其他人。只是这个:

106 110

我不是以英语为母语的人,我正在学习 python。谢谢

***列表中的对象是字符串

4

3 回答 3

2

这可能是最直接的方法,即使routes其中有很多项目也很有效:

from collections import Counter

counts = Counter(routes)

multi_routes = [i for i in counts if counts[i] > 1]

示例用法(使用数字,但这适用于可散列类型,例如字符串很好):

>>> from collections import Counter
>>> c = Counter([1,1,2,3,3,4,5,5,5])
>>> [i for i in c if c[i] > 1]
[1, 3, 5]
于 2012-12-27T05:19:41.453 回答
0

你需要这样的东西吗

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'])
于 2012-12-27T05:16:00.293 回答
0
routes = [i for i in set(routes) if routes.count(i) > 1]
于 2012-12-27T05:17:00.560 回答