Добавление большего значения в существующий ключ словаря python
Я новичок в python, и я застрял при создании словаря. Пожалуйста, помогите:)
Это то, с чего я начинаю:
dict = {}
dict['a']={'ra':7, 'dec':8}
dict['b']={'ra':3, 'dec':5}
Все отлично до сих пор. Я получаю:
In [93]: dict
Out[93]: {'a': {'dec':8 , 'ra': 7}, 'b': {'dec': 5, 'ra': 3}}
Но теперь, если я хочу добавить больше вещей к ключу 'a', и я делаю:
dict['a']={'dist':12}
Затем он удаляет предыдущую информацию "a", и теперь я получаю следующее:
In [93]: dict
Out[93]: {'a': {'dist':12}, 'b': {'dec': 5, 'ra': 3}}
Я хочу получить:
In [93]: dict
Out[93]: {'a': {'dec':8 , 'ra': 7, 'dist':12}, 'b': {'dec': 5, 'ra': 3}}
Кто-нибудь может помочь?
Ответы
Ответ 1
>>> d = {}
>>> d['a'] = {'ra':7, 'dec':8}
>>> d['b'] = {'ra':3, 'dec':5}
>>> d['a']['dist'] = 12
>>> d
{'a': {'dec': 8, 'dist': 12, 'ra': 7}, 'b': {'dec': 5, 'ra': 3}}
Если вы хотите обновить словарь из другого словаря, используйте update():
Обновить словарь с помощью пар ключ/значение из другого, переписать существующие ключи.
>>> d = {}
>>> d['a'] = {'ra':7, 'dec':8}
>>> d['b'] = {'ra':3, 'dec':5}
>>> d['a'].update({'dist': 12})
>>> d
{'a': {'dec': 8, 'dist': 12, 'ra': 7}, 'b': {'dec': 5, 'ra': 3}}
Кроме того, не используйте dict
в качестве имени переменной - он затеняет встроенный тип dict
. Посмотрите, что может случиться:
>>> dict(one=1)
{'one': 1}
>>> dict = {}
>>> dict(one=1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'dict' object is not callable
Ответ 2
Сделайте это:
dict['a']['dist'] = 12
Ответ 3
Попробуйте следующее:
dict['a'].update( {'dist': 12} )
Ответ 4
Вместо назначения {'dist':12}
- dict['a']
используйте метод update
.
dict['a'].update( {'dist':12} )
Это имеет то преимущество, что не нужно "разрывать" новый словарь, чтобы найти ключ (ключи) для вставки в цель. Рассмотрим:
a = build_some_dictionary()
for k in a:
dict['a'] = a[k]
против.
dict['a'].update(a)