Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在不使用索引的情况下访问列表中的dictionary对象?_Python_Arrays_List_Dictionary_Nested - Fatal编程技术网

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)

  • 每个文件夹中都有订单信息

  • 问题是,您可能也想摆脱嵌套列表。毕竟,一个文件夹可以包含另一个文件夹,按名称访问文件也不错。如果文件夹内容是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": {
        }
    }