Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 6, 2011 15:13:02

pupkin2
От:
Зарегистрирован: 2011-10-23
Сообщения: 103
Репутация: +  1  -
Профиль   Отправить e-mail  

"красивое" форматирование списка строк

всем привет.

имеется к примеру такой список:
отформатировать его можно банально в цикле. но возможно есть более изящное решение?

второй вопрос.
к примеру, есть такой список:
и такой словарь для формата: {“k1”:“str1”, “k2”:“str2”, “k3”:“str3”, “k4”:“str4”}
каким образом(кроме тупой итерации) можно отформатировать список изящно, используя для этого имена_ключей_и_их_значения_из_словаря?

спасибо.



Отредактировано (Ноя. 6, 2011 15:26:16)

Офлайн

#2 Ноя. 6, 2011 15:43:33

d1ffuz0r
От: Moscow
Зарегистрирован: 2011-03-25
Сообщения: 127
Репутация: +  5  -
Профиль   Отправить e-mail  

"красивое" форматирование списка строк

есть изящный map()

Офлайн

#3 Ноя. 6, 2011 15:48:04

pupkin2
От:
Зарегистрирован: 2011-10-23
Сообщения: 103
Репутация: +  1  -
Профиль   Отправить e-mail  

"красивое" форматирование списка строк

d1ffuz0r, спасибо. а можно плиз ссылку на доку по map()? а то я что-то блуд поймал.
еще раз спасибо.



Отредактировано (Ноя. 6, 2011 15:48:28)

Офлайн

#4 Ноя. 6, 2011 16:01:54

d1ffuz0r
От: Moscow
Зарегистрирован: 2011-03-25
Сообщения: 127
Репутация: +  5  -
Профиль   Отправить e-mail  

"красивое" форматирование списка строк

Офлайн

#5 Ноя. 6, 2011 16:02:43

pupkin2
От:
Зарегистрирован: 2011-10-23
Сообщения: 103
Репутация: +  1  -
Профиль   Отправить e-mail  

"красивое" форматирование списка строк

d1ffuz0r, спасибо.



Офлайн

#6 Ноя. 7, 2011 05:07:41

pupkin2
От:
Зарегистрирован: 2011-10-23
Сообщения: 103
Репутация: +  1  -
Профиль   Отправить e-mail  

"красивое" форматирование списка строк

d1ffuz0r, еще такой вопрос. по поводу -

к примеру, есть такой список:
и такой словарь для формата: {“k1”:“str1”, “k2”:“str2”, “k3”:“str3”, “k4”:“str4”}
в map(), первым аргументом нужно передать функцию, которая, для моего случая, должна принимать два аргумента.
т.е. -
l = ["{k1}/v1", "{k2}/v2", "{k3}/v3", "{k4}/v4"]
m = {"k1":"str1", "k2":"str2", "k3":"str3", "k4":"str4"}

def pred(li, mi):
print "li = ",li,",mi = ",mi
return li, mi

print map(pred, l, m)
http://liveworkspace.org/code/99f9ecc3cfcdab33c5df67d40f35ff9c

вывод:
li = {k1}/v1 ,mi = k3
li = {k2}/v2 ,mi = k2
li = {k3}/v3 ,mi = k1
li = {k4}/v4 ,mi = k4
li - строка. а mi что за тип? судя по выводу, это значения словаря, что не совсем то, что ожидалось.
каким образом можно передать в функцию вместо значения словаря, пару key<->val ?

или я вообще не тем путем пошел?



Офлайн

#7 Ноя. 7, 2011 05:55:15

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

"красивое" форматирование списка строк

Короткое, но не оптимальное решение.

l = ["{k1}/v1", "{k2}/v2", "{k3}/v3", "{k4}/v4"]
m = {"k1":"str1", "k2":"str2", "k3":"str3", "k4":"str4"}

print map(lambda x:m[x.split('/')[0].strip('{}')]+'/'+x.split('/')[1], l)
['str1/v1', 'str2/v2', 'str3/v3', 'str4/v4']

Офлайн

#8 Ноя. 7, 2011 07:31:35

pyuser
От:
Зарегистрирован: 2007-05-13
Сообщения: 658
Репутация: +  36  -
Профиль   Отправить e-mail  

"красивое" форматирование списка строк

l = ["{k1}/v1", "{k2}/v2", "{k3}/v3", "{k4}/v4"]
m = {"k1":"str1", "k2":"str2", "k3":"str3", "k4":"str4"}
print([x.format(**m) for x in l])



Офлайн

#9 Ноя. 7, 2011 10:38:03

pupkin2
От:
Зарегистрирован: 2011-10-23
Сообщения: 103
Репутация: +  1  -
Профиль   Отправить e-mail  

"красивое" форматирование списка строк

o7412369815963, pyuser, огромное спасибо вам. хотя был интерес самому разобраться)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version