Python 2d список к списку словарей - PullRequest
0 голосов
/ 31 марта 2020

Я получил этот список

lst = [['outlook', 'rainy', 2, 3, 'overcast', 4, 0, 'sunny', 3, 2], ['temp', 'hot', 2, 2, 'mild', 4, 2, 'cool', 3, 1], ['humidity', 'high', 3, 4, 'normal', 6, 1], ['windy', 'false', 6, 2, 'true', 3, 3]]

Я хотел бы превратить его в словарь, например:

{'outlook': {rainy: 2, 3, overcast: 4, 0, sunny: 3, 2}
'temp': {hot: 2, 2, mild: 4, 2, cool: 3, 1}
'humidity': {high: 3, 4, normal:, 6, 1}
'windy': {false: 6, 2, true: 3, 3}}

Пока моя попытка:

for elem in lst:
    d[elem[0]] = elem[1::1]


d = {'outlook': ['rainy', 2, 3, 'overcast', 4, 0, 'sunny', 3, 2], 'temp': ['hot', 2, 2, 'mild', 4, 2, 'cool', 3, 1], 'humidity': ['high', 3, 4, 'normal', 6, 1], 'windy': ['false', 6, 2, 'true', 3, 3]}

Ответы [ 2 ]

2 голосов
/ 31 марта 2020

По общему признанию, не самый читаемый, но может сделать это с вложенным пониманием dict

>>> {i[0]: {i[j]: i[j+1:j+3] for j in range(1,len(i),3)} for i in lst}
{'outlook': {'rainy': [2, 3], 'overcast': [4, 0], 'sunny': [3, 2]},
 'temp': {'hot': [2, 2], 'mild': [4, 2], 'cool': [3, 1]},
 'humidity': {'high': [3, 4], 'normal': [6, 1]},
 'windy': {'false': [6, 2], 'true': [3, 3]}}
1 голос
/ 31 марта 2020

Не один лайнер. Но в соответствии с тем, что вы уже попробовали.

d = {}
for elem in lst:
    subd = {}
    for i in range(1, len(elem), 3):
        subd[elem[i]] = elem[i+1:i+3]
    d[elem[0]] = subd
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...