编程学习之python 有序字典的学习

OrderedDict是dict的子类,它记住了内容添加的顺序。

使用方法:

import collections
d = collections.OrderedDict()
 d['a'] = 'A'
 d['b'] = 'B'
 d['c'] = 'C'
for k,v in d,items():
      print k,v

即输出的顺序为存储的顺序。

配合使用sorted(),可以实现使字典按照value排序:

sortedDict = sorted(d.items(), key = lambda d:d[1], reverse = True)

其中reverse设置为True表示逆序排序,即由大到小排序;默认情况下是由小到大排序。

运用这个知识点,可以很容易解答以下的编程题:https://www.nowcoder.com/questionTerminal/67df1d7889cf4c529576383c2e647c48?orderByHotValue=2&done=0&pos=45&onlyReference=false



程序如下:

import sys
import collections
lst = []
dct = collections.OrderedDict()
#循环读取输入,将输入的出现次数计入有序字典里面
for line in sys.stdin:
    ele = line.split('\\')[-1].strip('\n')
    if ele not in lst:
        lst.append(ele)
    if ele in dct:
        dct[ele] = dct[ele] + 1
    else:
        dct[ele] = 1
#对字典按照出现次数(value)排序
lstTuple = sorted(dct.items(), key = lambda d:d[1], reverse = True)
#输出不超过8行的结果
count = 0
for key in lstTuple:
    if count > 7:
        break
    count = count + 1
    #文件名取后16位
    if len(key[0].split(' ')[0]) > 16:
        print key[0].split(' ')[0][-16:], key[0].split(' ')[1], key[1]
    else:
        print key[0].split(' ')[0], key[0].split(' ')[1], key[1]


相关链接:

http://www.cnblogs.com/linyawen/archive/2012/03/15/2398292.html




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python 作为一门面向对象的编程语言,支持许多不同的数据类型,这些数据类型可以分为四个主要的类别:列表(list)、元组(tuple)、集合(set)和字典(dictionary)。 1. 列表(list) 列表是一组有序的元素,可以包含任何数据类型。列表用方括号([])表示,元素之间用逗号(,)隔开。列表是可变的,可以添加、删除或更改其中的元素。 例如,下面是一个包含三个元素的列表: ``` my_list = [1, 'hello', 3.14] ``` 2. 元组(tuple) 元组是一组有序的元素,可以包含任何数据类型。元组用小括号(())表示,元素之间用逗号(,)隔开。元组是不可变的,不能添加、删除或更改其中的元素。 例如,下面是一个包含三个元素的元组: ``` my_tuple = (1, 'hello', 3.14) ``` 3. 集合(set) 集合是一组无序的元素,不包含重复元素。集合用大括号({})表示,元素之间用逗号(,)隔开。集合是可变的,可以添加或删除其中的元素。 例如,下面是一个包含三个元素的集合: ``` my_set = {1, 'hello', 3.14} ``` 4. 字典(dictionary) 字典是一组无序的键值对(key-value)。键(key)必须是唯一的,值(value)可以是任何数据类型。字典用大括号({})表示,键值对之间用冒号(:)隔开,键值对之间用逗号(,)隔开。字典是可变的,可以添加、删除或更改其中的键值对。 例如,下面是一个包含三个键值对的字典: ``` my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'} ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值