如何重构或友好的程序员视图?

2024-09-30 18:21:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把它转换成一个更易于团队中其他程序员阅读的函数,但我不确定如何正确地重构这个合并了两个dict的函数,并根据值删除重复项

def mergeDict(json1, json2):
    cveids = set([n['id'] for n in json1]).union(set([n['id'] for n in json2]))

    jf1={s['id']:s['url'] for s in json1}
    jf2={s['id']:s['url'] for s in json2}

    return [{'id':cveid,'url':list(set(jf1.get(cveid,[])+jf2.get(cveid,[])))} for cveid in cveids]
    ```

Tags: 函数inidurlforget团队程序员
1条回答
网友
1楼 · 发布于 2024-09-30 18:21:37

当您与新手程序员一起工作时,分开工作是一个很好的开始,可以让他们更容易理解代码

例如:

def mergeDict(json1, json2):
    cveids1 = set([n['id'] for n in json1])
    cveids2 = set([n['id'] for n in json2])
    cveids = cveids1.union(cveids2)

    jf1={s['id']:s['url'] for s in json1}
    jf2={s['id']:s['url'] for s in json2}

    def makeUniq(cveid):
        urls1 = jf1.get(cveid, [])
        urls2 = jf2.get(cveid, [])
        urls = list(set(urls1 + urls2))
        return { 'id': cveid, 'url': urls }

    return [makeUniq(cveid) for cveid in sorted(list(cveids))]

列表理解有助于提高性能,但在做复杂的事情时会造成混乱。对于初学者来说,最好使用简单的“For”语法(最好),或者像我一样使用辅助函数来应用理解(可能)

人们也期待好名字。我开始思考“什么是‘cveids’?为什么不是键?”,但我保留了您的命名变量,因为我不知道您的业务,这些名称可能在上下文中表达

相关问题 更多 >