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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нужно часть словаря записать в переменные: переделать в одну строку. 
V
    Опции темы
PyS
Дата 21.9.2006, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 21.8.2006
Где: г. Алматы (Казахс тан)

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



Как записать код в одну строку?

Нужно часть словаря записать в переменные:
имя переменной = ключ словаря
значение переменной = значение для ключа словаря


Код

kw=dict(a=1, b=2, c=3, d=4, e=7)
a=kw.kw.get('a',0)
b=kw.get('bl',0)
c=kw.get('c',0)
kw.update(dict(a=a, b=b, c=c))
del kw['a'], kw['b'], kw['c']


Код

print a, b, c


Пожалуйста? помогите!

PS 
выше описанный код работает, но не плох только для не большого количества ключей, которых нужно записать в переменные, а вот когда этих ключей больше 10-15, то уже начинаю плохо ориетироваться в переменных и ключах.
PM MAIL   Вверх
setq
Дата 21.9.2006, 09:28 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Код

kw = dict(a=1, b=2, c=3, d=4, e=7)
for k in ['a', 'b', 'c']:
    exec k + ' = kw.get(k, 0)'


Hint: на кукбуке были хорошие рецепты по этой задаче. Просто рекомендую зайти туда и посмотреть.
  Вверх
albertn
Дата 21.9.2006, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 30
Всего: 34



setq, А мне почему-то казалось, что 'bl' там не просто так стоит
Код

kw = dict(a=1, b=2, c=3, d=4, e=7)
for k in {'a':'a', 'b':'bl', 'c':'c'}.items():
    exec k[0] + ' = kw.get(k[1], 0)'

PM WWW ICQ   Вверх
PyS
Дата 21.9.2006, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 21.8.2006
Где: г. Алматы (Казахс тан)

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



немного переделал
Код

kw = dict(a=1, b=2, c=3, d=4, e=7)
for k in {'a':1, 'b':2, 'c':3, 'l':77}.items():
    exec '%s = kw.setdefault(k[0], %s)'%(k[0], k[1])
    exec "del kw['%s']"%(k[0])



PM MAIL   Вверх
PyS
Дата 21.9.2006, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 21.8.2006
Где: г. Алматы (Казахс тан)

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



Цитата(setq @  21.9.2006,  12:28 Найти цитируемый пост)
Hint: на кукбуке были хорошие рецепты по этой задаче. Просто рекомендую зайти туда и посмотреть.

Пожалуйста, дай ссылку! smile
PM MAIL   Вверх
setq
Дата 21.9.2006, 11:13 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Не жалко:кукБук
  Вверх
PyS
Дата 21.9.2006, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 21.8.2006
Где: г. Алматы (Казахс тан)

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



Цитата(setq @  21.9.2006,  14:13 Найти цитируемый пост)
Не жалко:кукБук 

спасибо!

Добавлено @ 11:21 
это книга только для ActivePython или всего Python-а? 
PM MAIL   Вверх
PyS
Дата 21.9.2006, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 21.8.2006
Где: г. Алматы (Казахс тан)

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



ещё изменил
Код

kw = dict(a=1, b=2, c=3, d=4, e=7)
def mytype(x):
    x=int(x)
    return x**x+x
for k in {'a':(1, 'int'), 'b':(2, 'str'), 'c':(3, 'float'), 'l':(77, 'int'), 'w':(12, 'mytype')}.items():
    s1='kw.setdefault(k[0], %s)'%(k[1][0])
    s2=k[1][1]!='' and '%s(%s)'%(k[1][1], s1) or s1
    exec '%s = %s'%(k[0], s2)
    exec "del kw['%s']"%(k[0])


есть вариант как упростить?
PM MAIL   Вверх
PyAlexey
Дата 21.9.2006, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 19.9.2006
Где: Россия, Нижний Но вгород

Репутация: 6
Всего: 7



Цитата(PyS @  21.9.2006,  11:20 Найти цитируемый пост)
это книга только для ActivePython или всего Python-а?  

Для Питона вообще. Там почти тоже, что и в Oreilly Python Cookbook.
PM   Вверх
PyS
Дата 22.9.2006, 06:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 21.8.2006
Где: г. Алматы (Казахс тан)

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



Цитата(PyAlexey @  21.9.2006,  20:59 Найти цитируемый пост)
Для Питона вообще. Там почти тоже, что и в Oreilly Python Cookbook. 

спасибо!

Cr@$h, спасибо!
PM MAIL   Вверх
Virtuos86
Дата 20.1.2010, 20:21 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Не понятно, почему все так упорно(и охотно!) используют инструкцию exec.
Я к её использованию подхожу очень осторожно.
А уж смешивать exec с обычным кодом - это вообще моветон.

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


 




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


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

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