繁体   English   中英

嵌套字典列表的格式列表

[英]Format list of nested list of dictionaries

我正在尝试根据需要格式化数据结构。 从字典列表中,我想创建一个字典列表:

[
    {
        "nameWithOwner": "Repository-Org/documentation",
        "languages": {
            "edges": [
                {
                    "node": {
                        "name": "HCL"
                    },
                    "size": 3366
                },
                {
                    "node": {
                        "name": "Shell"
                    },
                    "size": 1435
                },
                {
                    "node": {
                        "name": "Ruby"
                    },
                    "size": 868
                },
                {
                    "node": {
                        "name": "HTML"
                    },
                    "size": 30650
                },
                {
                    "node": {
                        "name": "CSS"
                    },
                    "size": 59692
                }
            ]
        }
    },
    {
        "nameWithOwner": "Repository-Org/integration-api",
        "languages": {
            "edges": [
                {
                    "node": {
                        "name": "JavaScript"
                    },
                    "size": 245648
                },
                {
                    "node": {
                        "name": "Python"
                    },
                    "size": 7483
                },
                {
                    "node": {
                        "name": "Shell"
                    },
                    "size": 20050
                },
                {
                    "node": {
                        "name": "Dockerfile"
                    },
                    "size": 1343
                },
                {
                    "node": {
                        "name": "Roff"
                    },
                    "size": 492
                }
            ]
        }
    }
        {
        "nameWithOwner": "Repository-Org/demo",
        "languages": {
            "edges": [
                {
                    "node": {
                        "name": "Jupyter Notebook"
                    },
                    "size": 5125
                },
                {
                    "node": {
                        "name": "Python"
                    },
                    "size": 8623
                }
            ]
        }
    },
    {
        "nameWithOwner": "Repository-Org/github-link",
        "languages": {
            "edges": []
        }
    },
    {
        "nameWithOwner": "Repository-Org/intelligence-config",
        "languages": {
            "edges": []
        }
    }
]

我想 go 虽然它并格式化它以获得这样的字典列表,但我没有找到访问嵌套数据的方法或了解是否可以这样做

 [
    {
        "name": "Repository-Org/documentation",
        "language": {
            "HCL": 3366,
            "Shell": 1435,
            "Ruby": 868,
            "HTML": 30650,
            "CSS": 59692
        }
    },
    {
        "name": "Repository-Org/integration-api",
        "language": {
            "JavaScript": 245648,
            "Python": 7483,
            "Shell": 20050,
            "Dockerfile": 1343,
            "Roff": 492
        }
    },
    {
        "name": "Repository-Org/demo",
        "language": {
            "Jupyter Notebook": 5125,
            "Python": 8623
        }
    },
    {
        "name": "Repository-Org/github-link",
        "language": {}
    },
    {
        "name": "Repository-Org/intelligence-config",
        "language": {}
    },
]

目前我这样做了:

dicta = {}
array = []
for repository in variables:
    for key,value in repository.items() :
        dicta[key]=value
    array.append(dicta)
    print(array)

并得到了这个结果:

[
    {'nameWithOwner': 'Repository-Org/documentation', 'languages': {'edges': [
                {'node': {'name': 'HCL'
                    }, 'size': 3366
                },
                {'node': {'name': 'Shell'
                    }, 'size': 1435
                },
                {'node': {'name': 'Ruby'
                    }, 'size': 868
                },
                {'node': {'name': 'HTML'
                    }, 'size': 30650
                },
                {'node': {'name': 'CSS'
                    }, 'size': 59692
                }
            ]
        }
    }
]
[
    {'nameWithOwner': 'Repository-Org/integration-api', 'languages': {'edges': [
                {'node': {'name': 'JavaScript'
                    }, 'size': 245648
                },
                {'node': {'name': 'Python'
                    }, 'size': 7483
                },
                {'node': {'name': 'Shell'
                    }, 'size': 20050
                },
                {'node': {'name': 'Dockerfile'
                    }, 'size': 1343
                },
                {'node': {'name': 'Roff'
                    }, 'size': 492
                }
            ]
        }
    },
    {'nameWithOwner': 'Repository-Org/integration-api', 'languages': {'edges': [
                {'node': {'name': 'JavaScript'
                    }, 'size': 245648
                },
                {'node': {'name': 'Python'
                    }, 'size': 7483
                },
                {'node': {'name': 'Shell'
                    }, 'size': 20050
                },
                {'node': {'name': 'Dockerfile'
                    }, 'size': 1343
                },
                {'node': {'name': 'Roff'
                    }, 'size': 492
                }
            ]
        }
    }
]
[
    {'nameWithOwner': 'Repository-Org/demo', 'languages': {'edges': [
                {'node': {'name': 'Jupyter Notebook'
                    }, 'size': 5125
                },
                {'node': {'name': 'Python'
                    }, 'size': 8623
                }
            ]
        }
    },
    {'nameWithOwner': 'Repository-Org/demo', 'languages': {'edges': [
                {'node': {'name': 'Jupyter Notebook'
                    }, 'size': 5125
                },
                {'node': {'name': 'Python'
                    }, 'size': 8623
                }
            ]
        }
    },
    {'nameWithOwner': 'Repository-Org/demo', 'languages': {'edges': [
                {'node': {'name': 'Jupyter Notebook'
                    }, 'size': 5125
                },
                {'node': {'name': 'Python'
                    }, 'size': 8623
                }
            ]
        }
    }
]
[
    {'nameWithOwner': 'Repository-Org/github-link', 'languages': {'edges': []
        }
    },
    {'nameWithOwner': 'Repository-Org/github-link', 'languages': {'edges': []
        }
    },
    {'nameWithOwner': 'Repository-Org/github-link', 'languages': {'edges': []
        }
    },
    {'nameWithOwner': 'Repository-Org/github-link', 'languages': {'edges': []
        }
    }
]
[
    {'nameWithOwner': 'Repository-Org/intelligence-config', 'languages': {'edges': []
        }
    },
    {'nameWithOwner': 'Repository-Org/intelligence-config', 'languages': {'edges': []
        }
    },
    {'nameWithOwner': 'Repository-Org/intelligence-config', 'languages': {'edges': []
        }
    },
    {'nameWithOwner': 'Repository-Org/intelligence-config', 'languages': {'edges': []
        }
    },
    {'nameWithOwner': 'Repository-Org/intelligence-config', 'languages': {'edges': []
        }
    }
]

我应该改变什么才能得到我想要的?

您可以在这里找到一个工作示例: https://repl.it/repls/FastAlphanumericKnowledge

你可以试试:

original = [
    {
        "nameWithOwner": "Repository-Org/documentation",
        "languages": {
            "edges": [
                {
                    "node": {
                        "name": "HCL"
                    },
                    "size": 3366
                },
                {
                    "node": {
                        "name": "Shell"
                    },
                    "size": 1435
                },
                {
                    "node": {
                        "name": "Ruby"
                    },
                    "size": 868
                },
                {
                    "node": {
                        "name": "HTML"
                    },
                    "size": 30650
                },
                {
                    "node": {
                        "name": "CSS"
                    },
                    "size": 59692
                }
            ]
        }
    },
    {
        "nameWithOwner": "Repository-Org/integration-api",
        "languages": {
            "edges": [
                {
                    "node": {
                        "name": "JavaScript"
                    },
                    "size": 245648
                },
                {
                    "node": {
                        "name": "Python"
                    },
                    "size": 7483
                },
                {
                    "node": {
                        "name": "Shell"
                    },
                    "size": 20050
                },
                {
                    "node": {
                        "name": "Dockerfile"
                    },
                    "size": 1343
                },
                {
                    "node": {
                        "name": "Roff"
                    },
                    "size": 492
                }
            ]
        }
    },
    {
        "nameWithOwner": "Repository-Org/demo",
        "languages": {
            "edges": [
                {
                    "node": {
                        "name": "Jupyter Notebook"
                    },
                    "size": 5125
                },
                {
                    "node": {
                        "name": "Python"
                    },
                    "size": 8623
                }
            ]
        }
    },
    {
        "nameWithOwner": "Repository-Org/github-link",
        "languages": {
            "edges": []
        }
    },
    {
        "nameWithOwner": "Repository-Org/intelligence-config",
        "languages": {
            "edges": []
        }
    }
]
new_dicts = []
for d in original:
    temp_dict = {}
    temp_dict['name'] = d['nameWithOwner']
    temp_dict['languages'] = {}
    for l in d['languages']['edges']:
        temp_dict['languages'][l['node']['name']] = l['size']

    new_dicts.append(temp_dict)

print(new_dicts)

[{'name': 'Repository-Org/documentation', 'languages': {'HCL': 3366, 'Shell': 1435, 'Ruby': 868, 'HTML': 30650, 'CSS': 59692}}, {'name': 'Repository-Org/integration-api', 'languages': {'JavaScript': 245648, 'Python': 7483, 'Shell': 20050, 'Dockerfile': 1343, 'Roff': 492}}, {'name': 'Repository-Org/demo', 'languages': {'Jupyter Notebook': 5125, 'Python': 8623}}, {'name': 'Repository-Org/github-link', 'languages': {}}, {'name': 'Repository-Org/intelligence-config', 'languages': {}}]

演示

像这样试试


reps = {}

for x in origdata:
  if not x["nameWithOwner"] in reps:
    reps[x["nameWithOwner"]]={}
  for y in x["languages"]["edges"]:
    reps[x["nameWithOwner"]][y["node"]["name"]] = y["size"]

res = []
for x in reps:
  res.append({"name":x, "language":reps[x]})

# pprint for nice output
from pprint import pprint
pprint(res) 


暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM