Skip to main content
 首页 » 编程设计

python之如何用一系列值替换 Python 字典的所有值

2025年05月04日19lidabo

我有以下字典:

mydict = {('a', 'b'): 28.379, 
          ('c', 'd'): 32.292, 
          ('e', 'f'): 61.295, 
          ('g', 'h'): 112.593, 
          ('i', 'j'): 117.975} 

我想用 1 到 5 的范围替换所有值,但保持键的顺序。结果,我会得到这个:

mydict = {('a', 'b'): 1, 
          ('c', 'd'): 2, 
          ('e', 'f'): 3, 
          ('g', 'h'): 4, 
          ('i', 'j'): 5} 

字典的长度实际上是22000,所以我需要一个从1到22000的范围。 我该怎么做?

提前致谢。

请您参考如下方法:

使用 enumerate 迭代键,您可以:

mydict = {('a', 'b'): 28.379, 
          ('c', 'd'): 32.292, 
          ('e', 'f'): 61.295, 
          ('g', 'h'): 112.593, 
          ('i', 'j'): 117.975} 
 
for i, key in enumerate(mydict):  # iterates on the keys 
    mydict[key] = i 
 
 
print(mydict) 
# {('a', 'b'): 0, ('c', 'd'): 1, ('e', 'f'): 2, ('g', 'h'): 3, ('i', 'j'): 4} 

重要说明:从 Python 3.7 开始才正式订购字典(并且从 3.6 开始在 CPython 实现中),因此这对于旧版本的 Python 来说意义不大。


回答您的评论:enumerate采用可选的第二个参数 start(默认为 0)

因此,如果您想从 1 开始,只需执行以下操作:

for i, key in enumerate(mydict, start=1):  # iterates on the keys 
    mydict[key] = i