我有一本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']
我怎么能这样做?
答案 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
>>>