【问题标题】:JSON formatting navigation pythonJSON格式化导航python
【发布时间】:2019-03-16 06:26:44
【问题描述】:

我正在尝试检索已在一个订单下的多个项目的标题。 'line_items' 下可以有多个小节,显示每个项目的信息,标题是每个项目的参数之一。

[0] 给我带来了第一个项目的标题。

[-1] 给我带来了最后一个项目的标题。

如何与中间的小节进行交互?有没有办法返回所有关联的订单标题,无论是 1 个还是多个?

  r = requests.get("jsonURL", params="jsonparams")
  data = r.json()

  for item in data['orders']:
    purchased = item['line_items'][0]['title']
    purchased1 = item['line_items'][-1]['title']

【问题讨论】:

  • 您需要一个循环和一些数据结构来存储结果(可能是一个列表)。两者的解释都超出了本网站的范围。
  • 如果你能提供一个数据是什么样子的例子,我可以试着写一些东西

标签: python shopify


【解决方案1】:

您可以通过添加这样的内部循环来做到这一点:

r = requests.get("jsonURL", params="jsonparams")
data = r.json()

for items in data['orders']:
    for item in items['line_items']:
       print(item['title'])

这将打印出每个订单中商品的标题。

如果您只想打印出项目的子集,您可以在items['line_items'] 上使用切片。如果您只想打印第一个n 项目,那么您将编写items['line_items'][:n]。如果你只想打印最后的n 项目,你可以写items['line_items'][-n]。您甚至可以将两者结合起来,例如items['line_items'][1:-2] 将跳过列表中的第一项和最后两项。

【讨论】:

    【解决方案2】:

    希望这对你有帮助。

    r = requests.get("jsonURL", params="jsonparams")
    data = r.json()
    
    result = [items['items'] for items in data['orders']['line_items']]
    

    如果要获取第一个索引:

    print(result[0])
    

    如果要获取第一个索引:

    print(result[-1])
    

    【讨论】:

      【解决方案3】:

      您的代码中的 JSON 看起来有点像这样:

          data =  {
              "orders": {
              "line_items": [
                  {
                      "title": "abc"
                  },
                  {
                      "title": "def"
                  },
                  {
                      "title": "ghi"
                  },
                  {
                      "title": "jkl"
                  },
                  {
                      "title": "mno"
                  }
              ]
          }
      }
      

      因此,为了获取所有项目的标题,请遍历 line_items 列表中的每个项目,查找“title”键并将其值附加到名为 purchased 的空列表中:

      purchased = []
      for item in data['orders']['line_items']:
          if 'title' in item.keys():
              purchased.append(item['title'])
      print(purchased)
      #Output:
      ['abc', 'def', 'ghi', 'jkl', 'mno']
      

      如果您还想要购买的每件商品的数量,您可以使用Counter

      from collections import Counter
      print(Counter(purchased))
      #Output:
      Counter({'abc': 1, 'def': 1, 'ghi': 1, 'jkl': 1, 'mno': 1})
      

      【讨论】:

        猜你喜欢
        • 2018-02-09
        • 2021-07-03
        • 2017-01-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多