【问题标题】:Adding items to an object array from another array in python将项目从python中的另一个数组添加到对象数组
【发布时间】:2021-08-23 00:30:46
【问题描述】:

我目前正在学习 python 并从事我的第一个项目。我遇到了一个问题。我有一本这样的字典:

tickets_details ={"ticket": ["ticket1", "ticket2", "ticket3"]}

我还有另一个这样的对象数组:

obj = [
       {"Name":"ABC","Age":25,"Gender":"M"},
       {"Name":"DEF","Age":32,"Gender":"F"},
       {"Name":"PQR","Age":30,"Gender":"F"},
      ]

我想要做的是将两者结合起来,以便我想要的输出如下所示:

result = [
       {"Name":"ABC","Age":25,"Gender":"M", "ticket":"ticket1"},
       {"Name":"DEF","Age":32,"Gender":"F", "ticket":"ticket2"},
       {"Name":"PQR","Age":30,"Gender":"F", "ticket":"ticket3"},
      ]

我知道它是如何在 javascript 中完成的,但对 python 不太熟悉。请帮我解决我的问题。对不起,如果它是微不足道的。提前致谢。

【问题讨论】:

    标签: arrays python-3.x dictionary


    【解决方案1】:

    那就是

    obj = [
           {"Name":"ABC","Age":25,"Gender":"M"},
           {"Name":"DEF","Age":32,"Gender":"F"},
           {"Name":"PQR","Age":30,"Gender":"F"},
          ]
    
    tickets_details ={"ticket": ["ticket1", "ticket2", "ticket3"]}
    
    for i in range(len(obj)):
        obj[i]["ticket"] = tickets_details["ticket"][i]
    
    print(obj)
    

    【讨论】:

      【解决方案2】:

      你可以做这样的事情,使用 zip:

      def update(x,y):
        z = x
        z["tickets"] = y
        return z
      
      result = [update(a,b) for (a,b) in zip(obj, tickets_details["ticket"])]
      

      这将为第一个列表中的每个项目获取相应的票证,并将其作为新键添加到对象中。

      如果您想就地更新obj,您可以这样做:

      def update(x,y):
        x["tickets"] = y
      
      [update(a,b) for (a,b) in zip(obj, tickets_details["ticket"])]
      

      【讨论】:

        【解决方案3】:

        假设ticket_details["ticket"]obj的元素个数相同, 您所需要的只是一个 for 循环,其中迭代器是数组的索引。 range()len() 函数可能会有所帮助。

        range(n)返回一个从0到n-1的数字序列:

        for i in range(3):
            print(i) # will print out 0, 1, 2
        

        len(x) 返回数组或对象的长度:

        x = [0, 1, 2, 3]
        print(len(x)) # will print out 4
        

        最后,要向现有对象添加内容,您需要在分配值之前在键值对中提供 key

        object = {"a":"hello", "b":"world"}
        object["c"] = "bananas!"
        print(object) # will print {'a': 'hello', 'b': 'world', 'c': 'bananas!'}
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-12-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-12-08
          • 2020-05-02
          相关资源
          最近更新 更多