Как преобразовать разделенные запятыми пары значений ключа в словарь, используя лямбда-функции - PullRequest
2 голосов
/ 30 июня 2010

У меня небольшая проблема с определением функций ламбы. Может кто-нибудь показать мне, как разбить следующую строку в словарь, используя лямбда-функции?

fname:John,lname:doe,mname:dunno,city:Florida

Спасибо

Ответы [ 3 ]

15 голосов
/ 30 июня 2010

Здесь нет необходимости в лямбде.

s = "fname:John,lname:doe,mname:dunno,city:Florida"
sd = dict(u.split(":") for u in s.split(","))
2 голосов
/ 30 июня 2010

Вам не нужны лямбда-функции для этого:

>>> s = "fname:John,lname:doe,mname:dunno,city:Florida"
>>> dict(item.split(":") for item in s.split(","))
{'lname': 'doe', 'mname': 'dunno', 'fname': 'John', 'city': 'Florida'}

Но вы можете, если вы действительно хотите:

>>> dict(map(lambda x: x.split(":"), s.split(",")))
{'lname': 'doe', 'mname': 'dunno', 'fname': 'John', 'city': 'Florida'}
0 голосов
/ 30 июня 2010

Если вы действительно хотите, вы можете сделать это даже с двумя лямбдами, но никогда не пробуйте это на работе!Просто для удовольствия:

s = "name:John,lname:doe,mname:dunno,city:Florida"
d = reduce(lambda d, kv: d.__setitem__(kv[0], kv[1]) or d, 
    map(lambda s: s.split(':'), s.split(',')),
    {})                                                 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...