如何在文档中循环保存应用的每个结果

2024-04-25 00:48:54 发布

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

我有一个包含结果的dict的文档,我要做的是遍历文档并保存每个正确的结果

这是我目前的代码,工作正常,但只会返回第一个结果

#Fetch router descriptors based on a given flag
def getHSDirFlag():
   for r in router.itervalues():
        if 'HSDir' in r['flags']:
            return r
   return None

我试过:

def getHSDirFlag():
   HSDirList =()
   for r in router.itervalues():
        if 'HSDir' in r['flags']:
            HSDirList += r
        return HSDirList
   return None

但是获取错误TypeError:只能将tuple(而不是“dict”)连接到tuple

保存dict的最佳数据类型是什么?如何在文档中循环查找每个结果


Tags: in文档noneforreturnifdefdict
2条回答

您可以将词典保存在JSON文件中!在这段代码中,您有一个元组,您想在元组上串联字典,但我建议您使用JSON保存dict!你知道吗

此代码用于保存json文件:

import json
with open('data.json', 'wb') as fp:
    json.dump(data, fp)

这个是用来装东西的

with open('data.json', 'rb') as fp:
    data = json.load(fp)

更多信息请访问https://docs.python.org/2/library/json.html

首先,为什么要调用变量HSDirList,并使其成为tuple而不是list?!你知道吗

第二,为什么returnfor循环中的“list”,然后将return None(它永远不会到达)固定到函数的末尾?你知道吗

尝试:

def getHSDirFlag(router):
   HSDirList = [] # an actual list
   for r in router.itervalues():
       if 'HSDir' in r['flags']:
           HSDirList.append(r) # add to the list
   return HSDirList # return the list

请注意,returnfor循环之外,因此在遍历所有itervalues之前不会发生。而且,router现在是函数的参数,而不是依赖于作用域。你知道吗

最后,您应该阅读并考虑实现Python style guide, PEP-0008。你知道吗

相关问题 更多 >