我有一个包含结果字典的文档,我想要做的是遍历文档并保存每个结果是正确的
这是我当前的代码,它工作正常,但只会返回第一个结果
#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")连接到元组
保存字典的最佳数据类型是什么?如何循环查找每个结果的文档
答案 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)
了解详情