Как получить наименьший список дубликатов из списка списков? - PullRequest
1 голос
/ 25 октября 2010

Я новичок в Python, я работал со списком в течение 2 месяцев, и у меня есть несколько вопросов.У меня есть список, и у них есть дубликаты.Я могу получить дубликаты между двумя списками, теперь я хочу увеличить количество списков и глубину, как в этом примере: http://i219.photobucket.com/albums/cc213/DoSvn/example.png. Я хочу получить родителей дубликатов из красной части, а не синей части или списка этих дубликатов.Предметы.Как мне это сделать ?Спасибо:)


Обновление: Спасибо за ваши ответы: Я использовал Set, и это здорово.Но я думаю, что если я не знаю о размере списка списков и ничего более, это динамические списки, могу ли я получить все красные части, как в этом примере: http://i219.photobucket.com/albums/cc213/DoSvn/example02.png?

Ответы [ 2 ]

1 голос
/ 25 октября 2010

Если вы ищете что-то вроде этого: http://i219.photobucket.com/albums/cc213/DoSvn/example02.png

Затем вы можете попробовать Счетчик (доступно в Python 2.7+). Это должно работать так:

from collections import Counter

c = Counter()
for s in (listOfLists):
    c.update(s)

for item, nbItems in c.iteritems():
    if nbItems == 3:
        print '%s belongs to three lists.' % item

Или с более старыми питонами:

counter = {}

for s in (listOfLists):
    for elem in s:
        counter[elem] = counter.get(elem, 0) + 1

for item, nbItems in counter.iteritems():
    if nbItems == 3:
        print '%s belongs to three lists.' % item
0 голосов
/ 25 октября 2010

Используйте наборы, и вы можете получить пересечение, объединение, вычитание или любую сложную комбинацию

s1 = set([1, 2, 3, 4, 5])
s2 = set([4, 5, 6, 7, 8])
s3 = set([1, 3, 5, 7, 9])

# now to get duplicate between s1, s2 and s2 take intersection
print s1&s2&s3

вывод:

set([5])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...