Форум сайта python.su
всем привет.
имеется к примеру такой список:
отформатировать его можно банально в цикле. но возможно есть более изящное решение?
второй вопрос.
к примеру, есть такой список:
и такой словарь для формата: {“k1”:“str1”, “k2”:“str2”, “k3”:“str3”, “k4”:“str4”}
каким образом(кроме тупой итерации) можно отформатировать список изящно, используя для этого имена_ключей_и_их_значения_из_словаря?
спасибо.
Отредактировано (Ноя. 6, 2011 15:26:16)
Офлайн
есть изящный map()
Офлайн
d1ffuz0r, спасибо. а можно плиз ссылку на доку по map()? а то я что-то блуд поймал.
еще раз спасибо.
Отредактировано (Ноя. 6, 2011 15:48:28)
Офлайн
Офлайн
d1ffuz0r, спасибо.
Офлайн
d1ffuz0r, еще такой вопрос. по поводу -
к примеру, есть такой список:в map(), первым аргументом нужно передать функцию, которая, для моего случая, должна принимать два аргумента.
и такой словарь для формата: {“k1”:“str1”, “k2”:“str2”, “k3”:“str3”, “k4”:“str4”}
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)
li = {k1}/v1 ,mi = k3li - строка. а mi что за тип? судя по выводу, это значения словаря, что не совсем то, что ожидалось.
li = {k2}/v2 ,mi = k2
li = {k3}/v3 ,mi = k1
li = {k4}/v4 ,mi = k4
Офлайн
Короткое, но не оптимальное решение.
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']
Офлайн
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])
Офлайн
o7412369815963, pyuser, огромное спасибо вам. хотя был интерес самому разобраться)
Офлайн