【问题标题】:Convert 2D list, having 3 different values, into Dictionary将具有 3 个不同值的二维列表转换为字典
【发布时间】:2023-03-08 20:30:01
【问题描述】:

我正在尝试将其中特定行包含 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.x loops dictionary


    【解决方案1】:

    试试:

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

    【讨论】:

    • 感谢它在一个循环运行中工作。在这里,我对 dict.setdefault() 不太了解......这可能就是我每次都使用另一个 for 循环的原因。再次感谢。
    猜你喜欢
    • 2019-09-17
    • 2019-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-01
    • 2019-05-05
    • 2022-10-07
    相关资源
    最近更新 更多