专栏首页有趣的django7.python3实用编程技巧进阶(二)

7.python3实用编程技巧进阶(二)

1.5.如何根据字典中值的大小,对字典中的项进行排序

第一种方法:列表解析

# 1.5.如何根据字典中值的大小,对字典中的项进行排序

from random import randint

d = {k: randint(60, 100) for k in 'abcdefg'}
print(d)
#第一种方法:使用列表解析或者zip()函数,把字典的keys和values反转过来
list1 = [(v,k) for k,v in d.items()]
#或者使用zip()函数
# list2 = list(zip(d.values(),d.keys()))
print(list1)
list1 = sorted(list1,reverse=True)
print(list1)

第二种使用sorted

# 1.5.如何根据字典中值的大小,对字典中的项进行排序

from random import randint

d = {k: randint(60, 100) for k in 'abcdefg'}
print(d)
#第一种方法:使用列表解析或者zip()函数,把字典的keys和values反转过来
list1 = [(v,k) for k,v in d.items()]
#或者使用zip()函数
# list2 = list(zip(d.values(),d.keys()))

list1 = sorted(list1,reverse=True)


#第二种方法:使用sorted排序
p = sorted(d.items(),key=lambda item:item[1],reverse=True)
print(p)     #[('a', 97), ('b', 93), ('d', 93), ('e', 92), ('f', 76), ('c', 66), ('g', 61)]

#对分数添加一个排名
d = {k:(i,v) for i, (k,v) in enumerate(p,1)}
print(d)    #{'g': (1, 97), 'd': (2, 92), 'f': (3, 91), 'c': (4, 79), 'a': (5, 78), 'e': (6, 67), 'b': (7, 64)}

1.6.如何统计序列中元素的频度

# 1.6如何统计序列中元素的频度
from random import randint
from collections import Counter

data = [randint(1,5) for _ in range(1,20)]
print(data)   #[5, 2, 1, 2, 5, 3, 1, 1, 1, 4, 2, 5, 3, 2, 3, 5, 1, 2, 5]

#计算频度最高的是三个数
c = Counter(data)
print(c.most_common(3))    #[(1, 5), (3, 4), (2, 4)]

1.7.如何快速找到多个字典中的公共键

# 1.7.如何快速找到多个字典中的公共键

from random import randint,sample
from functools import reduce

d1 = {k:randint(1,4) for k in sample('abcdefgh',randint(3,6))}
d2 = {k:randint(1,4) for k in sample('abcdefgh',randint(3,6))}
d3 = {k:randint(1,4) for k in sample('abcdefgh',randint(3,6))}

#1.使用字典的keys()方法,得到一个字典keys的集合
#2.使用map函数,得到每个字典keys的集合
#3.使用reduce,取所有字典keys集合的交集

dl = [d1,d2,d3]
#找到三个字典中相同的keys
result = reduce(lambda a,b: a & b, map(dict.keys, dl))
print(result)

1.8.如何让字典保持有序

# 1.8.如何让字典保持有序

from collections import OrderedDict
from itertools import islice

d = OrderedDict()
d['e'] = 5
d['d'] = 4
d['c'] = 3
d['b'] = 2
d['a'] = 1

print(d)    #OrderedDict([('e', 5), ('d', 4), ('c', 3), ('b', 2), ('a', 1)])

#OrderedDict字典,在迭代操作时,它会保持元素被插入时的顺序

def query_by_order(d, a, b =None):
    if b is None:
        b = a + 1
    return list(islice(d,a,b))

#第五个key
res1 = query_by_order(d,4)
print(res1)     #['a']

#第二个和第三个key
res2 = query_by_order(d,1,3)
print(res2)     #['d', 'c']

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python3实用编程技巧进阶

    第1章 课程简介(本课程基于py3.x并赠送py2.x的讲解) 第2章 数据结构与算法相关问题与解决技巧 第3章 复杂场景下字符串处理相关问题与...

    py3study
  • 6.python3实用编程技巧进阶(一)

     如下元祖,通过函数判断年龄和性别,但是这样代码可读性很差,别人并不知道student[1],student[2]代表什么意思。如何解决呢

    zhang_derek
  • 8.python3实用编程技巧进阶(三)

    zhang_derek
  • 10.python3实用编程技巧进阶(五)

    zhang_derek
  • 9.python3实用编程技巧进阶(四)

    zhang_derek
  • Python2 与Python3的版本区别实例分析

    本文实例讲述了Python2 与Python3的版本区别。分享给大家供大家参考,具体如下:

    砸漏
  • Python编程 高阶函数使用技巧

    高阶函数指的是能接收一个或多个函数作为参数的函数,python中有一些内置的高阶函数,在某些场合使用可以提高代码的效率。

    快学Python
  • 编程大神进阶之路:Python技巧小贴士

    整理用户输入的问题在编程过程中极为常见。通常情况下,将字符转换为小写或大写就够了,有时你可以使用正则表达式模块「Regex」完成这项工作。但是如果问题很复杂,可...

    昱良
  • 编程大神进阶之路:Python技巧小贴士

    整理用户输入的问题在编程过程中极为常见。通常情况下,将字符转换为小写或大写就够了,有时你可以使用正则表达式模块「Regex」完成这项工作。但是如果问题很复杂,可...

    CDA数据分析师
  • 编程大神进阶之路:Python技巧小贴士

    整理用户输入的问题在编程过程中极为常见。通常情况下,将字符转换为小写或大写就够了,有时你可以使用正则表达式模块「Regex」完成这项工作。但是如果问题很复杂,可...

    Python数据科学
  • 编程大神进阶之路:Python技巧小贴士

    介绍 Python 炫酷功能(例如,变量解包,偏函数,枚举可迭代对象等)的文章层出不穷。但是还有很多 Python 的编程小技巧鲜被提及。因此,本文会试着介绍一...

    机器之心
  • python新式类和经典类的区别实例分析

    新式类就是 class person(object): 这种形式的, 从py2.2 开始出现的

    砸漏
  • bash编程之xargs实用技巧

    xargs结合管道操作符|,可以完成很多看似复杂的问题: 1、快速删除所有.log日志文件 机器运行久了,就会有各式各样的日志文件,散落在各个目录下,可以利用下...

    菩提树下的杨过
  • 32个实用matlab编程技巧

    今天给大家介绍一些编程小技巧,之前给大家介绍过matlab编程小技巧,本期是在之前的基础之上做了修正和补充完善,下面一起来看看吧。

    matlab爱好者
  • 软件测试进阶之4——编程语言学习技巧

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    MyJie
  • Python入门学习路线

    Python技术路径中包含入门知识、Python基础、Web框架、基础项目、网络编程、数据与计算、综合项目七个模块。路径中的教程将带你逐步深入,学会如何使用 ...

    py3study
  • Python研发工程师必备工具合集

    1.功能强大、性能优良、界面美观、多平台兼容,但是收费;不过收费也不是很贵,有条件的还是建议买个正版,省事又方便。

    py3study
  • 给老徐的书《软件自动化测试实战解析-基于Python3》写的序

    明代学者林希元有云:"自古圣贤之言学也,咸以躬行实践为先,识见言论次之",强调了实践是第一位的,而著书立说次之。唯有经过实践总结而成的书,方能对读者形成更强的指...

    Linux阅码场
  • 互联网+ 何人能挡?带着你的Code飞奔吧!

    SQLServer性能优化专题 01.SQLServer性能优化之----强大的文件组----分盘存储(水平分库) http://www.cnblogs.com...

    逸鹏

扫码关注云+社区

领取腾讯云代金券