Как создать словарь из вложенного списка - PullRequest
0 голосов
/ 06 сентября 2018
players=[['Jim','16','2'], ['John','5','1'], ['Jenny','1','0']]
lst=['score', 'win']

У меня есть списки выше. Я хочу создать вывод следующим образом:

{'Jim': {'score': 16, 'won': 2}, 'John': {'score': 5, 'won': 1}, 'Jenny': {'score': 1, 'won': 0}}

Возможно ли это?

Ответы [ 3 ]

0 голосов
/ 06 сентября 2018

Вот одно решение, которое также преобразует значения в целые числа:

res = {name: dict(zip(lst, map(int, scores))) for name, *scores in players}

{'Jenny': {'score': 1, 'win': 0},
 'Jim': {'score': 16, 'win': 2},
 'John': {'score': 5, 'win': 1}}
0 голосов
/ 06 сентября 2018
>>> players=[['Jim','16','2'], ['John','5','1'], ['Jenny','1','0']]
>>> lst=['score', 'win']
>>> a = {}
>>> for player in players:
    a[player[0]] = {lst[0]:player[1],lst[1]:player[2]}

>>> a
{'Jim': {'score': '16', 'win': '2'}, 'John': {'score': '5', 'win': '1'}, 'Jenny': {'score': '1', 'win': '0'}}
>>> 
0 голосов
/ 06 сентября 2018

Вы можете использовать распаковку с zip:

players=[['Jim','16','2'], ['John','5','1'], ['Jenny','1','0']]
lst=['score', 'win']
results = {a:dict(zip(lst, [int(i) for i in b])) for a, *b in players}

Выход:

{'Jim': {'score': 16, 'win': 2}, 'John': {'score': 5, 'win': 1}, 'Jenny': {'score': 1, 'win': 0}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...