Python 为二维列表的每个元素指定一个随机id
我有一个2D列表Python 为二维列表的每个元素指定一个随机id,python,algorithm,Python,Algorithm,我有一个2D列表 paths = [["root", "folderA", "folderB", "folderC", "folderD"], ["root", "folderA", "folderB", "folderE"]] 它表示如下所示的树结构: root ----A (1) --------B (2)
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”
。。。。。我想,在这种情况下,元组会工作得更好,因为字符串连接会产生歧义。