Это взяло меня за день проб и ошибок. Я пытаюсь сохранить словарь запросов и их совпадений в поиске. Моя проблема в том, что может быть одно или несколько совпадений. Мое текущее решение:Как динамически добавлять к массиву в dict?
match5[query_site]
уже имеет первое совпадение, но если он найдет другое совпадение, он добавит его, используя следующий код.
temp5=[] #temporary variable to create array
if isinstance(match5[query_site],list): #check if already a list
temp5.extend(match5[query_site])
temp5.append(match_site)
else:
temp5.append(match5[query_site])
match5[query_site]=temp5 #add new location
Эта инструкция if в буквальном смысле предотвращает преобразование моего элемента str в массив букв. Если я попытаюсь инициализировать первое совпадение как один массив элементов, я получаю None
, если попытаюсь напрямую добавить. Я чувствую, что для достижения этого должен быть более питонический метод без временной переменной и условного утверждения.
Update: Вот пример моего выхода, когда он работает
5'flank: ['8_73793824', '6_133347883', '4_167491131', '18_535703', '14_48370386'] 3'flank: X_11731384
Там в 5 матчей за мой «5'flank» и только 1 матч за мой «3'flank».
Что такое 'match_site'? – jojo
Не могли бы вы по умолчанию иметь списки как значения 'match5'? то вы можете просто добавить, если 'match_site' еще нет в списке. Или даже лучше сделайте значения 'set' и используйте' add'. Или, может быть, я не получаю то, что вы хотите ... – jojo
'match_site' - это просто строка – nchuang