2014-12-08 5 views
-3

Я работаю над реализацией алгоритма поиска. Я все еще зеленый, когда дело доходит до python, но моя проблема показалась мне очень странной. Я создаю dict, содержащий ссылки. Когда я затем распечатываю dict, первая пара удаляется. Это также относится к остальной части кода, и поэтому он терпит неудачу.Dictonary удаляет первую пару

links = {'A': 'B', 'A': 'C', 'D': 'A', 'E': 'A'} 
print links 

Это код, который вызывается в начале программы. Собственно, второй и третий призывы сделаны, и это все еще странно.

+2

Словари могут только хранить уникальные ключи. –

+0

@AshwiniChaudhary Я не думал об этом. Спасибо за комментарий, хотя! – Herbstein

ответ

1

Перейти через this это даст вам лучшее представление о dic, list и Tuples, и ваш код выше не работает, потому что вы пытаетесь сохранить значения для того же ключа, где dic. необходимо иметь уникальные ключи или перекроет

как этот

A = {'A':'1','A':'2','B':'3'} 

здесь ключ не уникален, так что будет переопределение в поле ниже код упоминанием он не будет

A = {'A1':'1', 'A2':'2', 'A3':'3'} 
0

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

Вы можете использовать список список, но это не позволит вам использовать все полезные свойства Dict:

links = [['A', 'B'], ['A', 'C'], ['D', 'A'], ['E', 'A']] 

В качестве альтернативы вы можете использовать список в качестве значения.

links = {'A': ['B', 'C'], 'D': ['A'], 'E': ['A']} 

Если вы генерировать Dict динамически, то defaultdict полезно, оно инициализирует значение ключа, например, со списком:

from collections import defaultdict 
links = defaultdict(list) 
links['A'].append('B') 
links['A'].append('C') 
Смежные вопросы