проверьте значение, а затем сохраните индекс в ключ, который может содержать множество индексов / значений - PullRequest
0 голосов
/ 29 августа 2018

Я хотел бы загрузить список, а затем найти аналогичный элемент в списке по его порядковому номеру. Затем я создал бы словарь для хранения этих индексов. Индекс должен храниться в том же словаре.

Мой код:

a = ["a" , "b" , "c" , "d" , "r" , "g" , "h" , "f" , "a", "b" ,"c" , "c" , "c" , "f", "f" , "a" , "a" , "h" ]

aa = []
index = []
for x in a:
    aa.append(x)
    dd = {}
    if x in aa:
        dd[x] = [a.index(x)]
    index.append(dd)

print(index)

Токовый выход:

[{'a': [0]}, {'b': [1]}, {'c': [2]}, {'d': [3]}, {'r': [4]}, {'g': [5]}, {'h': [6]}, {'f': [7]}, {'a': [0]}, {'b': [1]}, {'c': [2]}, {'c': [2]}, {'c': [2]}, {'f': [7]}, {'f': [7]}, {'a': [0]}, {'a': [0]}, {'h': [6]}]

Например:

Ожидаемый результат:

[{'a': [0, 8, 15, 16]}, {'b': [1, 9]}, {'c': [2,10,11,12]}, {'d': [3]}, {'r': [4]}, {'g': [5]}, {'h': [6,17]}, {'f': [7,13,14]}] 

Или ожидаемый результат может быть примерно таким же, если это возможно:

[[0, 8, 15, 16],[1, 9],[2,10,11,12],[3],[4],[5],[6,17],[7,13,14]]

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

1 Ответ

0 голосов
/ 29 августа 2018

Использование collection.defaultdict

Ex:

from collections import defaultdict

a = ["a" , "b" , "c" , "d" , "r" , "g" , "h" , "f" , "a", "b" ,"c" , "c" , "c" , "f", "f" , "a" , "a" , "h" ]
d = defaultdict(list)

for i, v in enumerate(a):   #enumerate to get index
    d[v].append(i)

print(d)
print(d.values())

Выход:

defaultdict(<type 'list'>, {'a': [0, 8, 15, 16], 'c': [2, 10, 11, 12], 'b': [1, 9], 'd': [3], 'g': [5], 'f': [7, 13, 14], 'h': [6, 17], 'r': [4]})
[[0, 8, 15, 16], [2, 10, 11, 12], [1, 9], [3], [5], [7, 13, 14], [6, 17], [4]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...