如何循环文档以保存所有适用的结果

时间:2014-07-06 19:55:04

标签: python

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

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

#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:只能将元组(不是" dict")连接到元组

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

2 个答案:

答案 0 :(得分:1)

首先,为什么要调用变量HSDirList并将其设为tuple而不是list

其次,为什么return {list> for循环内,然后点击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

请注意,return for循环,因此在您迭代所有itervalues之后才会发生。此外,router现在是函数的参数,而不是依赖于范围。

最后,您应该阅读并考虑实施Python style guide, PEP-0008

答案 1 :(得分:0)

您可以将您的词典保存在JSON文件中!在这段代码中你有一个元组,你想在它上连接字典,但我建议你使用JSON来保存字典!

此代码用于保存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

了解详情