【问题标题】:iterate through nested json object and get values in table with python [closed]遍历嵌套的json对象并使用python获取表中的值[关闭]
【发布时间】:2021-08-30 06:14:12
【问题描述】:

我有一个类似的json数据

    "preference":[
                {
                  "access":"true1",
                  "visibility":"false1"
                },
                {
                  "access":"true2",
                  "visibility":"false2"
                },
                {
                  "access":"true3",
                  "visibility":"false3"
                },
           ]

我想访问列表对象并以表格格式显示每个列表元素

    for item in data['preference']
         print(item)
      
     TableData = [
             [item.get('access'),item.get('visibility')]
             ]

这只会打印最后一项

           {
              "access":"true3",
              "visibility":"false3"
            },

表格格式 请建议我一些代码以尽快访问表格格式的每个元素 提前谢谢你..

【问题讨论】:

  • 我无法理解这个问题。请修正您的格式(缩进在 Python 中是有意义的)并显示准确的预期输出以及实际输出。
  • 因为item被分配了最后一个值
  • TableData = [[item.get('access'),item.get('visibility')]for item in data['preference']]?
  • “access”用于检索数据,“in table format”用于输出数据
  • 修正代码缩进使用正确的大写字母。帮助帮手来帮助你。 stackoverflow.com/help/how-to-ask

标签: python json nested-lists reportlab invoice


【解决方案1】:

这种行为的原因是你没有附加到TableDatalist,你只是添加它,所以当你继续将元素添加到列表时它覆盖最后一个元素。
以下是您将获得预期输出的代码:

data = {
"preference":[
                {
                  "access":"true1",
                  "visibility":"false1"
                },
                {
                  "access":"true2",
                  "visibility":"false2"
                },
                {
                  "access":"true3",
                  "visibility":"false3"
                },
           ]
}
TableData = []
for item in data['preference']:
    print(item)
    TableData.append([item.get('access'),item.get('visibility')])
    
print (TableData)

输出:

[['true1', 'false1'], ['true2', 'false2'], ['true3', 'false3']]

【讨论】:

    【解决方案2】:

    如果你只想显示数据,你不需要任何容器来保存数据

    for item in data['preference']:
        print(f"{item.get('access')} | {item.get('visibility')}")
    

    但如果你想保存它们,请使用列表

    # FIX YOUR COE
    TableData = []
    for item in data['preference']:
        TableData.append([item.get('access'), item.get('visibility')])
    
    # IMPROVE
    TableData = [[item.get('access'), item.get('visibility')] for item in data['preference']]
    
    print(TableData)  # [['true1', 'false1'], ['true2', 'false2'], ['true3', 'false3']]
    

    【讨论】:

      猜你喜欢
      • 2016-04-21
      • 2019-04-24
      • 2021-11-28
      • 2019-07-25
      • 1970-01-01
      • 1970-01-01
      • 2018-05-13
      • 1970-01-01
      相关资源
      最近更新 更多