【问题标题】:Python 2d list to dictionary listPython 2d 列表到字典列表
【发布时间】:2020-03-31 12:20:37
【问题描述】:

我得到了这份清单

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]}

【问题讨论】:

  • 那个字典不是有效的python语法

标签: python list dictionary multidimensional-array


【解决方案1】:

诚然不是最易读的,但可以通过嵌套的 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-liner 解决方案
【解决方案2】:

不是一个班轮。但是按照您已经尝试过的方式。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多