Извлекать частичные дубликаты из списка списков; возвращать одно совпадение с записью происхождения каждого дубликата; питон

У меня есть список в следующем формате:

L = ['apples oranges  x',
     'bananas apples  y',
     'apples oranges  z']

Для каждого элемента в L, если item.split()[0:2] соответствует другому item.split()[0:2] (т. Е. "Яблочные апельсины" соответствуют "яблочным апельсинам"), тогда мне нужно вывести один элемент.split () [0: 2], за которым следуют теги, записывающие начало частично дублированной строки. Теги поступают из индекса 3 каждого элемента (т. Е. X, y или z).

Итак, вывод L будет L2:

L2 = ['apples oranges x z',
     'bananas apples y']

Есть идеи?

1 ответ

Решение
d = collections.defaultdict(list)

for line in L:
    name, value = line.rsplit(' ',1)
    d[name].append(value)

тогда у вас будет такой голос:

{'bananas apples ': ['y'], 'apples oranges ': ['x', 'z']}

Так что вам нужно только отформатировать ключи и значения:

[key + ' '.join(values) for key, values in d.items()]

И результат будет:

['bananas apples y', 'apples oranges x z']
Другие вопросы по тегам