Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Есть ли возможность обновлять ключи в словаре ? 
V
    Опции темы
doomik
Дата 6.7.2007, 00:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Одинокий волк
**


Профиль
Группа: Участник
Сообщений: 360
Регистрация: 25.10.2005
Где: #vingrad

Репутация: нет
Всего: 15



Привет!
Допустим у меня есть словарь:
Код

d = { 'Key1': 'Value1' }

Как можно обновить 'Key1' на другое значения ?


--------------------
"Единственный способ изучать новый язык программирования - писать на нем 
программы." 
- Brian Kernighan

Remember, st1ng3r 
/server irc.ircline.ru /j #vingrad
PM   Вверх
Daevaorn
Дата 6.7.2007, 01:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 9
Всего: 70



Цитата(doomik @  6.7.2007,  01:46 Найти цитируемый пост)
Как можно обновить 'Key1' на другое значения ? 

Код

d['key1'] = 'NewValue'

?
PM MAIL WWW   Вверх
JackYF
Дата 6.7.2007, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 2
Всего: 162



Daevaorn, не, это - обновление значения по ключу.
А ему надо обновить ключ.

По сабжу думаю, что удалить этот ключ (предварительно считав значение) и добавить другой с этим же значением будет нормальным выходом.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
pythonwin
Дата 6.7.2007, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 14
Всего: 36



Цитата(JackYF @  6.7.2007,  14:00 Найти цитируемый пост)
По сабжу думаю, что удалить этот ключ (предварительно считав значение) и добавить другой с этим же значением будет нормальным выходом. 


Код

d['Key2']=d['Key1']
del d['Key1']

PM WWW GTalk Jabber   Вверх
doomik
Дата 6.7.2007, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Одинокий волк
**


Профиль
Группа: Участник
Сообщений: 360
Регистрация: 25.10.2005
Где: #vingrad

Репутация: нет
Всего: 15



JackYF,
Цитата

По сабжу думаю, что удалить этот ключ (предварительно считав значение) и добавить другой с этим же значением будет нормальным выходом.


Ок так и поступил другого выхода не нашел.
Написал функцию:
Код

def changekey(d):
  oldkey = raw_input("Enter old key:")  # читаем имя старого ключа
  newkey = raw_input("Enter new key:") # читаем имя нового ключа
  tmp = d[oldkey] # сохраняем все значение старого ключа
  d.pop(oldkey) # удаляем ключ и его значения
  d[newkey] = tmp # вносим новый ключ со старами значениями


Функция изменяет только ключи типа str, вот её более лучший вариант для str и int:
Код

def changekey(d):
    oldkey = raw_input("Enter old key:")  
    inpt = raw_input("Convert to int (y/n) ?")
    if inpt == 'y':  # если нужно конвертить старый ключ в int то входим в if
        try:
            oldkey = int(oldkey)
        except:
            print "Error: Check your input!"
    
    newkey = raw_input("Enter new key:") # читаем новый ключ
    inpt = raw_input("Convert to int (y/n) ?")
    if inpt == 'y': # если нужно конвертить новый ключ в int то входим в if
        try:
            newkey = int(newkey)
        except:
            print "Error: Check your input!"
    tmp = d[oldkey] # сохраняем значения старого ключа
    d.pop(oldkey) # удаляем старый ключ с его значениями
    d[newkey] = tmp # добавляем в словарь новый ключ со старами значениями


Спасибо всем за ответы вопрос решен !


--------------------
"Единственный способ изучать новый язык программирования - писать на нем 
программы." 
- Brian Kernighan

Remember, st1ng3r 
/server irc.ircline.ru /j #vingrad
PM   Вверх
lorien
Дата 7.7.2007, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 16.11.2004
Где: omsk

Репутация: 2
Всего: 3



Код

>>> foo = {'bar':'baz'}
>>> foo
{'bar': 'baz'}
>>> foo['bobr'] = foo.pop('bar')
>>> foo
{'bobr': 'baz'}

Тока не забывайте, что в словаре гарантированно уникальны только ключи, а значения могут повторяться
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0691 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.