Сравнение вложенного списка и поиск индекса совпадения значений - PullRequest
0 голосов
/ 31 января 2020

Я ищу, чтобы найти совпадения во вложенном списке на основе 1-го индекса и добавить плавающие числа каждого из списков, которые встречают совпадение.

Скажем, у меня есть этот вложенный список:

a = [[1234, 5678, 4.5], [0987, 6543, 6.8], [4321, 5678, 9.8]]

Я ищу способ найти совпадение для 1-го индекса в списке с другим списком в пределах "a", и как только совпадение найдено, сложите значения 2-й индекс.

Я пытался найти множество способов проверки совпадений, таких как вложенные циклы, функция any () и такие вещи, как:

match = []

if a[x][1] in a[0:-1][1]:
   a.pop(x)
   match.append(x)

для создания Новый список основан на совпадениях и сравнивает их таким образом, но, кажется, он никогда не работает. Кажется, что все эти методы просто возвращают, если произошло совпадение, а не указатель c, связанный с совпадением.

Должен ли я создать словарь, ключами которого являются 1-й индекс, а значением - 2-й индексировать и сравнивать таким образом? Или есть какой-то другой способ проверить индекс совпадений и сравнить его внутри al oop?

1 Ответ

0 голосов
/ 31 января 2020

Как вы предложили в конце своего вопроса, вы можете использовать словарь, чтобы делать то, что вы хотите, используя 1-е значение индекса в качестве ключа и 2-й индекс в качестве значения. Перебирайте список списков, сохраняя элемент в словаре. Если он уже существует, добавьте значения.

a = [[1234, 5678, 4.5], [987, 6543, 6.8], [4321, 5678, 9.8]]
d = {}
for l in a:
    id = l[1]
    if id not in d:
        d[id] = l[2]
    else:
        d[id] += l[2]
print(*d.items())

Вывод:

(5678, 14.3) (6543, 6.8)
...