将新键重置为字典

时间:2016-08-24 14:35:37

标签: python dictionary key

我有一本python字典。

A=[0:'dog',1:'cat',3:'fly',4,'fish',6:'lizard']

我想根据range(len(A))(自然增量)重置键,这应该是这样的:

new_A=[0:'dog',1:'cat',2:'fly',3:'fish',4:'lizard']

我怎么能这样做?

5 个答案:

答案 0 :(得分:4)

这是py2.x和py3.x的一个工作示例:

A = {0: 'dog', 1: 'cat', 3: 'fly', 4: 'fish', 6: 'lizard'}

B = {i: v for i, v in enumerate(A.values())}
print(B)

答案 1 :(得分:2)

如果要按旧密钥的升序分配新密钥,则

new_A = {i: A[k] for i, k in enumerate(sorted(A.keys()))}

答案 2 :(得分:2)

如果您想保持相同的按键顺序

A={0:'dog',1:'cat',3:'fly',4,'fish',6:'lizard'}
new_A=dict((i,A[k]) for i,k in enumerate(sorted(A.keys()))

答案 3 :(得分:1)

不订购字典。如果你的密钥是增量整数,你也可以使用一个列表。

new_A = list(A.values())

答案 4 :(得分:0)

如果您想按创建排序以及按键访问,那么您需要OrderedDict

>>> from collections import OrderedDict
>>> d=OrderedDict()
>>> d['Cat'] = 'cool'
>>> d['Dog'] = 'best'
>>> d['Fish'] = 'cold'
>>> d['Norwegian Blue'] = 'ex-parrot'
>>> d
OrderedDict([('Cat', 'cool'), ('Dog', 'best'), ('Fish', 'cold'), ('Norwegian Blue', 'ex-parrot')])
 >>> d.values()
odict_values(['cool', 'best', 'cold', 'ex-parrot'])
>>> d.keys()
odict_keys(['Cat', 'Dog', 'Fish', 'Norwegian Blue'])

您可以按照添加顺序的顺序访问项目,但您也可以使用dict(哈希)给出的快速按键访问。如果您想要“自然”序列号,则可以正常使用enumerate

>>> for i,it in enumerate( d.items()): 
...   print( '%5d %15s %15s' % ( i,it[0], it[1]) )
... 
    0             Cat            cool
    1             Dog            best
    2            Fish            cold
    3  Norwegian Blue       ex-parrot
>>>