如何在python中重新索引字典



我最初有一个字典,如下所示:

mydict = {int(i): 'values' for i in range(5)}
{0: 'values', 1: 'values', 2: 'values', 3: 'values', 4: 'values'} # output

然后我删除了两个索引:

del mydict[0]
del mydict[3]
{1: 'values', 2: 'values', 4: 'values'} # output

现在我想";reindex";把字典翻译成

{0: 'values', 1: 'values', 2: 'values'} # output

我真正的字典比这个大得多,所以不可能手动做。。

您可以使用enumerate:

mydict = {1: 'a', 2: 'b', 4: 'd'}
mydict = dict(enumerate(mydict.values()))
print(mydict) # {0: 'a', 1: 'b', 2: 'd'}

请注意,这仅适用于python 3.7+。在此之前,不需要dict来保持顺序。

如果你确实想更安全,你可以先对物品进行分类:

mydict = {2: 'b', 1: 'a', 4: 'd'}
mydict = dict(enumerate(v for _, v in sorted(mydict.items())))
print(mydict) # {0: 'a', 1: 'b', 2: 'd'}

您可以同时使用zip(ref(以另一种方式执行此操作。如果:

dict_ = {1: 'values', 2: 'values', 4: 'values'}
d = dict(zip(range(3), list(dict_.values())))
# {0: 'values', 1: 'values', 2: 'values'}

这里,range(3)是将作为新的目标列表。

最新更新