В настоящее время я создаю понимание dict из объекта itertools groupby, чтобы создать словарь поиска для некоторых строк.
#groupby iterable arranged by first 3 chars of each element of 'Titles' list.
lookup= groupby(sorted(Titles), key=itemgetter(0,1,2))
#key=concatenate the elements of the tuple, val=list of grouper iterable
lookdict={''.join(i):list(j) for i,j in lookup}
Эта вторая строка дает мне IndexError: string index out of range
. Я не могу сказать, является ли это проблемой с j
, итерируемым группером или вызовом join
в dict comp. Следующее:
for i,j in lookup:
print(''.join(i),j)
Это, как и ожидалось, не проблематично.
Необходимо иметь значения в виде списка и ключи в виде строк, чтобы избежать какого-либо преобразования при каждом поиске.
Может ли кто-нибудь указать, где я ошибаюсь здесь?
Titles = ['123abc', '123456', 'abcdef', 'abc123']
получилlookdict == {'123': ['123456', '123abc'], 'abc': ['abc123', 'abcdef']}
. Не могли бы вы опубликовать некоторые примеры данных? - person FHTMitchell   schedule 03.04.2018