python中OrderedDict的使用

我们都知道dict是没有序的,一维字典按照value值排序可以用sorted(dict.items(), key=lambda x:x[1], reverse = False)

python中直接有’有序字典’OrderedDict可以调用。
下面是一串例子:

'''
建立OrderedDict
'''      
mydict = collections.OrderedDict()
#OrderedDict()

mydict[1] = 10
mydict[2] = 20
mydict['a'] = 30
#OrderedDict([(1, 10), (2, 20), ('a', 30)])

'''
pop() 弹出指定key值
'''
mydict.pop('a')
#OrderedDict([(1, 10), (2, 20)])

'''
popitem(last=True) last出去,根据LIFO原则,后进先出
popitem(last=False) last不出去,根据FIFO原则,先进先出
'''
mydict[100] = 1000
mydict[200] = 2000
mydict.popitem() #last=True
#OrderedDict([(1, 10), (2, 20), (100, 1000)])
mydict.popitem(False) #last=False 
#OrderedDict([(2, 20), (100, 1000)])

'''
move_to_end() 根据key值,把此(key,value)挪到最后
'''
mydict[66]=666
mydict.move_to_end(2)
#OrderedDict([(100, 1000), (66, 666), (2, 20)])

'''
clear() 清空
'''
mydict.clear()
#OrderedDict()

'''
输入一个key值,若无,默认value为None
'''
mydict.setdefault('hello')
#OrderedDict([('hello', None)])
mydict['hello'] = 1
#OrderedDict([('hello', 1)])

'''
fromkeys()通过列表直接创建字典,若无value则为None
注意这里要赋值给新的变量
'''
nums = ['222','223','555']
mydict.fromkeys(nums)
print(mydict)
#OrderedDict([('hello', 1)])

x = mydict.fromkeys(nums)
print(x)
#OrderedDict([('222', None), ('223', None), ('555', None)])

y = mydict.fromkeys(nums,'嘿嘿')
print(y)
#OrderedDict([('222', '嘿嘿'), ('223', '嘿嘿'), ('555', '嘿嘿')])

'''
del 删除
'''
del y['222']
print(y)
#OrderedDict([('223', '嘿嘿'), ('555', '嘿嘿')])

你可能感兴趣的:(tricks)