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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Опять странности с HASH... ? 
V
    Опции темы
RM2010
  Дата 18.2.2010, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



На этот раз такая проблема. Представим, что есть hash, который нам надо очистить и заполнить нужными данными.

Код

myhash = {}

myhash["aaaa"] = "beleberdaaa!"
myhash["bbbbb"] = "tozhe_ne_ochenj_vazhno!"
myhash["cccc"] = "nu_sovsem_ne_nuzhno!"

def populate():
    myhash = {}
    myhash["1"] = "a"
    myhash["2"] = "b"
    myhash["3"] = "c"

populate()

for s in myhash:
    print("%s = %s" % ( s , myhash[s] ) )


>>> ================================ RESTART ================================
>>> 
aaaa = beleberdaaa!
cccc = nu_sovsem_ne_nuzhno!
bbbbb = tozhe_ne_ochenj_vazhno!
>>> 

вроде всё правильно, а нет, не работает, выдаёт только старые данные. smile 

Код

myhash = {}

myhash["aaaa"] = "beleberdaaa!"
myhash["bbbbb"] = "tozhe_ne_ochenj_vazhno!"
myhash["cccc"] = "nu_sovsem_ne_nuzhno!"

def populate():
    myhash["1"] = "a"
    myhash["2"] = "b"
    myhash["3"] = "c"

def run():
    myhash = {}
    populate()

run()

for s in myhash:
    print("%s = %s" % ( s , myhash[s] ) )

>>> ================================ RESTART ================================
>>> 
cccc = nu_sovsem_ne_nuzhno!
aaaa = beleberdaaa!
3 = c
2 = b
1 = a
bbbbb = tozhe_ne_ochenj_vazhno!
>>> 

А так, почему-то и старые и новые.  Или может hash надо очищать не myhash = {} а как-то иначе???
PM MAIL   Вверх
kemiisto
Дата 18.2.2010, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

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



Код

def populate():
    myhash = {}
    ...

заменить на 
Код

def populate():
    myhash.clear()
    ...


Дока. Всё таже, кстати.
Цитата
clear()
    Remove all items from the dictionary.



--------------------
PM MAIL WWW GTalk Jabber   Вверх
Void
Дата 18.2.2010, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


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

Репутация: 10
Всего: 173



Цитата(RM2010 @  19.2.2010,  00:21 Найти цитируемый пост)
def run():
    myhash = {}
    populate()

Тут проблема с областями видимости. Дело в том, что Python этот код рассматривает, как определение новой локальной переменной, а не присваивание глобальной. Надо:
Код
def run():
    global myhash
    myhash = {}

Но это вообще, к сведению, в данном конкретном случае лучше воспользоваться советом kemiisto.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
RM2010
Дата 18.2.2010, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



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


 




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


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

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