Python 如何在不使用索引的情况下访问列表中的dictionary对象?
我正在尝试为每个用户创建文件夹和文件的目录,但我似乎无法访问用户所有文件列表中某个文件夹的字典,只能使用文件夹名称,而不能通过索引 我可以遍历列表,检查元素是否是一个带有我试图访问的文件夹名的字典,但我觉得可能有更简单的方法Python 如何在不使用索引的情况下访问列表中的dictionary对象?,python,arrays,list,dictionary,nested,Python,Arrays,List,Dictionary,Nested,我正在尝试为每个用户创建文件夹和文件的目录,但我似乎无法访问用户所有文件列表中某个文件夹的字典,只能使用文件夹名称,而不能通过索引 我可以遍历列表,检查元素是否是一个带有我试图访问的文件夹名的字典,但我觉得可能有更简单的方法 userDir = {"User1": [{"folder1": [file1, file2]}, file3], "User2": []} 在这里访问字典键“folder1”的最佳方式是什么 userDir[“User1”]中obj的: 如果类型(obj)=dict:
userDir = {"User1": [{"folder1": [file1, file2]}, file3], "User2": []}
在这里访问字典键“folder1”的最佳方式是什么
userDir[“User1”]中obj的:
如果类型(obj)=dict:
如果obj.keys()中的“folder1”:
打印(obj[“folder1”])#或使用“folder1”执行其他操作
问题在于,userDir[“User1”]
是一个列表。如果不遍历列表并实际查看每一件事情(除了使用索引ofc),就无法在列表中找到一件事情
Python确实提供了一些很好的列表搜索方法,例如,列表理解:
user1 = [x for x in userDir["User1"] if isinstance(x, dict) and "folder1" in x.keys()]
然而,真正的答案是,数据格式不适合您尝试执行的操作。让您的userDir
看起来更像:
userDir = {
"User1": {
"folder1": [file1, file2, file3]
},
"User2": {}
}
或者类似的东西 IMHO您最好不要在文件夹中使用list,因为无论如何,您应该使用索引或迭代项来查找数据结构中的任何文件 如果没有列表类型,您的目录将如下
userDir = {
"User1": {
"folder1": {
"file1": file1,
"file2": file2
},
"file3": file3
},
"User2": {
}
}
如果这是因为文件的顺序很重要,那么您有几个选择
问题是,您可能也想摆脱嵌套列表。毕竟,一个文件夹可以包含另一个文件夹,按名称访问文件也不错。如果文件夹内容是dict,则文件可以没有或某些有用的标记对象作为值。
userDir = {
"_type": "folder",
"User1": {
"_type": "folder",
"folder1": {
"_type": "folder",
"file1": {
"_type": "file",
"_content": file1,
"_order": 1,
},
"file2": {
"_type": "file",
"_content": file2,
"_order": 2,
},
},
"file3": {
"_type": "file",
"_content": file3,
"_order": 1,
},
},
"User2": {
"_type": "folder",
}
}
userDir = {
"_order": ["User1", "User2"],
"User1": {
"_order": ["folder1", "file3"],
"folder1": {
"_order": ["User1", "User2"],
"file1": file1,
"file2": file2
},
"file3": file3
},
"User2": {
}
}