首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌套字典列表的格式列表

嵌套字典列表的格式列表
EN

Stack Overflow用户
提问于 2020-04-24 14:41:38
回答 2查看 59关注 0票数 1

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

代码语言:javascript
复制
[
    {
        "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": []
        }
    }
]

我想通过它并格式化它来获得这样的字典列表,我没有找到一种方法来访问嵌套的数据,也没有理解它是否可能这样做

代码语言:javascript
复制
 [
    {
        "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": {}
    },
]

当时我这样做了:

代码语言:javascript
复制
dicta = {}
array = []
for repository in variables:
    for key,value in repository.items() :
        dicta[key]=value
    array.append(dicta)
    print(array)

得到了这样的结果:

代码语言:javascript
复制
[
    {'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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-24 14:53:21

你可以试试:

代码语言:javascript
复制
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)
代码语言:javascript
复制
[{'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': {}}]

演示

票数 1
EN

Stack Overflow用户

发布于 2020-04-24 14:58:09

试着像这样

代码语言:javascript
复制
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) 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61410965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档