编程笔记:python 中的 OrderedDict

python 中的 OrderedDict是字典的一个子类,其内部的元素有顺序关系,会记录元素插入的顺序。两个 OrderedDict 中即使包含的 key-value 对完全相同,但只要它们的顺序不同,程序也依然会判断出两个 OrderedDict 是不相等的.示例如下:

from collections import OrderedDict
print("dict:")
dict={}
# dict=OrderedDict()
dict['a'] = 'A'
dict['b'] = 'B'
dict['c'] = 'C'
print(dict)


print("\ndict1:")
# dict1 = OrderedDict()
dict1={}
dict1['c'] = 'C'
dict1['b'] = 'B'
dict1['a'] = 'A'
print(dict1)


print(dict1==dict)

当 dict={}, dict1={}时,”print(dict1==dict) “输出“True”

当 dict=OrderedDict(), dict1=OrderedDict()时,”print(dict1==dict) “输出“False”

 

由于 OrderedDict 是有序的,因此 Python 为之提供了如下两个方法:

  1. popitem(last=True):默认弹出并返回最右边(最后加入)的 key-value 对;如果将 last 参数设为 False,则弹出并返回最左边(最先加入)的 key-value 对。
  2. move_to_end(key, last=True):默认将指定的 key-value 对移动到最右边(最后加入);如果将 last 改为 False,则将指定的 key-value 对移动到最左边(最先加入)。

示例如下:

from collections import OrderedDict
print("dict:")
dict=OrderedDict()
dict['a'] = 'A'
dict['b'] = 'B'
dict['c'] = 'C'
dict['d'] = 'D'
dict['e'] = 'E'
print(dict)


print("\ndict1:")
dict1 = OrderedDict()
dict1['e'] = 'E'
dict1['d'] = 'D'
dict1['c'] = 'C'
dict1['b'] = 'B'
dict1['a'] = 'A'
print(dict1)


print(dict1==dict)

## OrderedDict.popitem(last=True) : 默认从字典弹出并返回最后一个 key-value 对;
# 如果将 last 参数设为 False,则弹出并返回最左边(最先加入)的 key-value 对。
print(dict.popitem(last=True))
print(dict.popitem(last=True)[0])
print(dict.popitem(last=True)[1])

print(dict.popitem(last=False))

##move_to_end(key, last=True):默认将指定的 key-value 对移动到最右边(最后加入).
# 如果将 last 改为 False,则将指定的 key-value 对移动到最左边(最先加入)。
dict1.move_to_end('a',last=False)
print(dict1)

参考:http://c.biancheng.net/view/2438.html

你可能感兴趣的:(Python)