как создать словарь из списка - PullRequest
0 голосов
/ 29 октября 2018

У меня есть список предложений, и я хочу преобразовать его в словарь, включающий только имя пользователя и возраст.

list=['@David, the age is 27', '@John, the age is 99', '@rain, the age is 45']

Вывод, который я хочу получить, это словарь типа

dic={David:27,John:99,rain:45}

Спасибо за помощь

Ответы [ 3 ]

0 голосов
/ 29 октября 2018

Вы можете определить пользовательскую функцию, применить ее к каждой строке через map, а затем передать dict:

L = ['@David, the age is 27', '@John, the age is 99', '@rain, the age is 45']

def key_value_extractor(x):
    x_split = x.split(',')  # split by ','
    name = x_split[0][1:]   # take 1st split and exclude first character
    age = int(x_split[1].rsplit(maxsplit=1)[-1])  # take 2nd, right-split, convert to int
    return name, age

res = dict(map(key_value_extractor, L))

{'David': 27, 'John': 99, 'rain': 45}
0 голосов
/ 29 октября 2018

Попробуйте понимание слова:

dic = {x.split()[0].strip(',@'): int(x.split()[-1]) for x in member_list}

Если вам нужны пояснения по частям выражения, скажите.

РЕДАКТИРОВАТЬ: Пояснение, как требуется:

Хорошо, так:

  • , включающий выражение в {}, говорит о том, что мы создаем словарь с этим пониманием. x представляет каждую строку-член в этом понимании
  • x.split() разбивает строку на список подстрок по знаку «пробел» (по умолчанию можно настроить)

    • с [0] мы берем первую подстроку ["@David,"]
    • с помощью .strip(',@') мы удаляем запятую и символ @ вокруг имени
    • с этим мы создали словарный ключ
  • Значение ключа: int(x.split()[-1])

    • x.split()[-1] принимает последнюю подстроку ('27')
    • заключая его в int() мы превращаем его в целое число
0 голосов
/ 29 октября 2018

Вы можете использовать словарь понимания

l = ['@David, the age is 27', '@John, the age is 99', '@rain, the age is 45']


X = {item.split(',')[0][1:]:int(item.split(',')[1].rsplit(maxsplit=1)[-1]) for item in l}
print(X)

#output
{'David': 27, 'John': 99, 'rain': 45}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...