Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.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 为二维列表的每个元素指定一个随机id_Python_Algorithm - Fatal编程技术网

Python 为二维列表的每个元素指定一个随机id

Python 为二维列表的每个元素指定一个随机id,python,algorithm,Python,Algorithm,我有一个2D列表 paths = [["root", "folderA", "folderB", "folderC", "folderD"], ["root", "folderA", "folderB", "folderE"]] 它表示如下所示的树结构: root ----A (1) --------B (2)

我有一个2D列表

paths = [["root", "folderA", "folderB", "folderC", "folderD"], ["root", "folderA", "folderB", "folderE"]]
它表示如下所示的树结构:

root
----A (1) 
--------B (2) 
------------C (3) 
----------------D (4) 
------------E (5) 
我想为每个文件夹分配一个唯一的ID(顺序无关紧要)

但是,文件夹名称可以重叠。因此,不在同一级别的两个文件夹可以具有相同的名称。比如A和E可以有相同的名字,但C和E不能

我写了这个:

d = defaultdict(lambda: len(d))
ids = [[d[y] for y in x] for x in paths] 
但是,这会将相同的ID分配给相同的文件夹名称。
鉴于我的命名条件,有人能帮我想出其他聪明的方法吗?

让整个路径成为名称的一部分:

d = defaultdict(lambda: len(d))
ids = [[d[x[:i]] for i in range(1,len(x))] for x in paths] 

您可以使用
uuid
从uuid导入uuid4生成唯一的id;ids=[[str(uuid4())for y in x]for x in path]可能是文件夹名称及其父文件夹名称?@Sushanth为列表中的每个项目生成唯一的id,但这不是我想要的:/
TypeError:unhabable type:“list”
。。。。。我想,在这种情况下,元组会工作得更好,因为字符串连接会产生歧义。