我在python中有一个表示目录结构的字典,所以像
dict = {
"file1.java": {
"method1": [],
"method2": []
},
"dir1": {
"file2.java":{
.
.
.
},
"dir2": {
"file3.java": {
"method3": ["hello", "hi"],
"method4": []
"file4.java": {
}
}
}
我也有一个像
这样的字符串列表list = ["dir1", "dir2", "file3.java", "method3"]
是否有一种简单的方法来遍历字典以使用列表访问method3中的数据 所以我希望能够致电
dict[list]
让它做类似
的事情 dict["dir1"]["dir2"]["file3.java"]["method3"]
并返回类似
的内容["hello", "hi"]
但我不知道字符串列表会有多长,所以列表
list = ["file1.java","method1"]
也需要工作
答案 0 :(得分:1)
您可以使用reduce
内置功能。</ p>
db = {
"file1.java": {
"method1": [],
"method2": []
},
"dir1": {
"dir2": {
"file3.java": {
"method3": ["hello", "hi"],
"method4": []
},
"file4.java": {
}
}
}
}
def lookup(db, path):
return reduce(dict.get, path, db)
print lookup( db, ["dir1", "dir2", "file3.java", "method3"] )
print lookup( db, ["file1.java","method1"] )
答案 1 :(得分:0)
你可以利用dicts和数组是引用类型的事实来做这样的事情......
current_entry = dict
for item in list:
current_entry = current_entry[item]
# The element you want is now in current_entry
当然,添加适当的错误检查以确保您不会尝试选择不存在的dict元素。