Python学习记录07-字典排序

本文的内容是对字典进行排序。Python 的字典中本身是无序的,没有这个说法的。
常见的我们对字典进行排序,一般有通过sorted函数,用key来排序,或者是通过value来排序,以下是示例的代码。

d1 ={}
d1['cat '] = 9
d1['dog '] = 6
d1['fish '] = 3
d1['bird '] = 1
print(sorted(d1.keys()))  #用key排序  ['bird ', 'cat ', 'dog ', 'fish ']

print(sorted(d1.items(),key=lambda item:item[1]))  #用value排序 [('bird ', 1), ('fish ', 3), ('dog ', 6), ('cat ', 9)]

当我们创建一个字典,并且在迭代或序列化这个字典的时候能够控制元素的顺序,我们可以使用collections里的OrderedDict类,来实现。 它会按照元素被插入时候的顺序来进行排序。

d = OrderedDict()
d['cat '] = 9
d['dog '] = 6
d['fish '] = 3
d['bird '] = 1
print(d)  # OrderedDict([('cat ', 9), ('dog ', 6), ('fish ', 3), ('bird ', 1)])

构建一个将来需要序列化或编码成其他格式的映射的时候, OrderedDict 是非常有用的。 比如,你想精确控制以 JSON 编码后字段的顺序,你可以先使用 OrderedDict 来构建这样的数据。

json.dumps(d)
'{"foo": 1, "bar": 2, "spam": 3, "grok": 4}'

注意点:

1、OrderedDict 内部维护着一个根据键插入顺序排序的双向链表。每次当一个新的元素插入进来的时候, 它会被放到链表的尾部。对于一个已经存在的键的重复赋值不会改变键的顺序。
2、一个 OrderedDict 的大小是一个普通字典的两倍,因为它内部维护着另外一个链表。 所以如果你要构建一个需要大量 OrderedDict 实例的数据结构的时候。对内存资源的占用较高,请谨慎考虑

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇