mad*_*aks 1 python dictionary key
这是我当前的字典:
{0: [(1,1.0)],
1: [(132,1.0)],
2: [(2000,1.0)],
3: [(234,1.0)]}
Run Code Online (Sandbox Code Playgroud)
现在,在某些情况下我可能不得不放弃这些钥匙。以 2 为例,生成的字典将如下所示:
{0: [(1,1.0)],
1: [(132,1.0)],
3: [(234,1.0)]}
Run Code Online (Sandbox Code Playgroud)
现在,我想对键重新编号,以便它们持续增加 1:
{0: [(1,1.0)],
1: [(132,1.0)],
2: [(234,1.0)]}
Run Code Online (Sandbox Code Playgroud)
我的第一个想法是循环遍历字典并替换键,但考虑到我的实际字典有 2000 个键,这似乎不是最有效的路径。
有更有效的方法吗?
D = dict(enumerate(D[x] for x in sorted(D)))
Run Code Online (Sandbox Code Playgroud)
但请使用列表。它按数字索引并自动重新编号:
>>> L = [
... [(1,1.0)],
... [(132,1.0)],
... [(2000,1.0)],
... [(234,1.0)]
... ]
>>> del L[1]
>>> print(L)
[
[(1,1.0)],
[(2000,1.0)],
[(234,1.0)]
]
Run Code Online (Sandbox Code Playgroud)
您可以使用将字典转换为列表L = [D[x] for x in sorted(D)]
并使用转换回字典格式D = dict(enumerate(L))
所以这可以是一个解决方案:
D = dict(enumerate(D[x] for x in sorted(D)))
Run Code Online (Sandbox Code Playgroud)
但最好首先使用列表。