Python 字典的排序

在做 google-python-exercises 中 basic/wordcount.py 这个练习的时候,遇到了一个关于字典排序的问题。其实很简单,但是当时做的时候想了好久才找到思路(初学者嘛 ^_^)。于是想把这个问题记录下来。

题目

假设有如下字典(字典的键称作 word,其值称作 count):

word_count = {'a': 5, 'o': 2, 'g': 100, 'hi': 52}
  1. 按照 word 首字母进行排序,并将排序好的 word 和 count 以 word count 的形式打印出来。
  2. 按照 count 的大小由大到小进行排序,并将排序好的 word 和 count 以 word count 的形式打印出来。

1. 按照字典的键进行排序

#!/usr/bin/python -tt

import sys

def main():
  word_count = {'a': 5, 'o': 2, 'g': 100, 'hi': 52}

  for word in sorted(word_count.keys()):
    print word, word_count[word]

if __name__ == '__main__':
  main()

输出为:

a 5
g 100
hi 52
o 2

2. 按照字典的值进行排序

#!/usr/bin/python -tt

import sys

def get_count(word_count_tuple):
  return word_count_tuple[1]

def main():
  word_count = {'a': 5, 'o': 2, 'g': 100, 'hi': 52}

  items = sorted(word_count.items(), key=get_count, reverse=True)

  for item in items:
    print item[0], item[1]

if __name__ == '__main__':
  main()

输出为:

g 100
hi 52
a 5
o 2

这个地方采用了 sorted() 函数的知识,当时做的时候没想起可以使用 key= 自定义排序,因此想了好久都没做出来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值