首页 > 解决方案 > 将具有 3 个不同值的二维列表转换为字典

问题描述

我正在尝试将其中特定行包含 3 个值的二维列表转换为字典。

输入我有:

L1 = [ #Name  #runs  #balls
      ["Virat", 100, 60],
      ["Dhoni", 35, 30],
      ["Virat", 42, 55],
      ["Sachin", 0, 30],
      ["Jadeja", 60, 60],
     ]   

现在我想要的输出:

d1 = {
      "Virat": { "runs": [100,42], "balls":[60,55] }
      "Dhoni": { "runs": [35], "balls":[30]}
      "Sachin": { "runs": [0], "balls":[30] }
      "Jadeja": { "runs": [60], "balls":[60] }
      }

事情是我想用最少的嵌套循环(最多1个)来完成。

请帮我解决这个问题!

谢谢。

标签: python-3.xloopsdictionary

解决方案


尝试:

L1 = [  # Name  #runs  #balls
    ["Virat", 100, 60],
    ["Dhoni", 35, 30],
    ["Virat", 42, 55],
    ["Sachin", 0, 30],
    ["Jadeja", 60, 60],
]

out = {}
for n, r, b in L1:
    out.setdefault(n, {"runs": [], "balls": []})
    out[n]["runs"].append(r)
    out[n]["balls"].append(b)

print(out)

印刷:

{
    "Virat": {"runs": [100, 42], "balls": [60, 55]},
    "Dhoni": {"runs": [35], "balls": [30]},
    "Sachin": {"runs": [0], "balls": [30]},
    "Jadeja": {"runs": [60], "balls": [60]},
}

推荐阅读