【问题标题】:How can i sum up all values with the same index in a dictionary which each key has a nested list as a value?我如何总结字典中具有相同索引的所有值,其中每个键都有一个嵌套列表作为值?
【发布时间】:2022-01-13 12:31:59
【问题描述】:

我有一本字典,字典的每个键都有一个列表列表(嵌套列表)作为其值。我想要的是想象我们有:

x = {1: [[1, 2], [3, 5]], 2: [[2, 1], [2, 6]], 3: [[1, 5], [5, 4]]}

我的问题是如何访问字典的每个元素并连接具有相同索引的元素:例如所有键的第一个列表:

[1,2] from first keye + 
[2,1] from second and 
[1,5] from third one 

我该怎么做?

【问题讨论】:

  • “相同索引”是什么意思?你能提供一个预期输出的例子吗?
  • 这能回答你的问题吗? How to iterate through two lists in parallel?zip(*x.values()...
  • 在标题中你说了一些关于 sum 但从未在问题中解释...

标签: python dictionary


【解决方案1】:

当您遍历字典并将其附加到新列表并应用 sum 函数时,您可以轻松访问嵌套列表。

代码:

x={1: [[1,2],[3,5]] , 2:[[2,1],[2,6]], 3:[[1,5],[5,4]]}
ans=[]
for key in x:
    ans += x[key][0]
print(sum(ans))

输出:

12

【讨论】:

    【解决方案2】:

    假设您想要第一个元素的列表,您可以这样做:

    >>> x={1: [[1,2],[3,5]] , 2:[[2,1],[2,6]], 3:[[1,5],[5,4]]}
    >>> y = [a[0] for a in x.values()]
    >>> y
    [[1, 2], [2, 1], [1, 5]]
    

    如果要第二个元素,可以使用a[1]

    【讨论】:

      【解决方案3】:

      您期望的输出并不完全清楚(您想求和吗?连接?),但似乎很清楚的是您希望将值作为矩阵处理。

      您可以为此使用numpy

      对值求和
      import numpy as np
      
      sum(map(np.array, x.values())).tolist()
      

      输出:

      [[4, 8], [10, 15]]        # [[1+2+1, 2+1+5], [3+2+5, 5+6+4]]
      
      连接矩阵(水平)
      import numpy as np
      
      np.hstack(list(map(np.array, x.values()))).tolist()
      

      输出:

      [[1, 2, 2, 1, 1, 5], [3, 5, 2, 6, 5, 4]]
      

      【讨论】:

        【解决方案4】:

        正如How to iterate through two lists in parallel? 中所解释的,zip 正是这样做的:同时迭代几个可迭代对象并从所有可迭代对象中生成匹配索引项的元组。

        在你的情况下,迭代是字典的values。所以只需将值解压到zip:

        x = {1: [[1, 2], [3, 5]], 2: [[2, 1], [2, 6]], 3: [[1, 5], [5, 4]]}
        
        for y in zip(*x.values()):
            print(y)
        

        给予:

        ([1, 2], [2, 1], [1, 5])
        ([3, 5], [2, 6], [5, 4])
        

        【讨论】:

          猜你喜欢
          • 2021-06-13
          • 2021-11-24
          • 2017-01-04
          • 1970-01-01
          • 2020-08-20
          • 2019-08-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多