Python进阶学习(1)

如何在列表、字典、集合中根据条件筛选

import random
import string

lst = [random.randint(1,100) for _ in range(100)]
print(lst)
result = [x for x in lst if x > 90]
print(result)

diction = {'student%s' % random.choice(string.ascii_lowercase) : i for i in range(1,20)}
print(diction)
result = {k:v for k,v in diction.items() if v > 15}
print(result)

set = {i for i in range(1,100)}
print(set)
result = {x for x in set if x > 30}
print(result)

如何给元组中的每个元素命名

import collections
info = [(201610081,'张三',18),
         (201610082,'李四',19),
         (201610083,'王五',18),
         (201610084,'申六',17)]

Student = collections.namedtuple('Students',['number','name','age'])

for i in info:
    student = Student(i[0],i[1],i[2])	
    print(student)

因为每个 i 都是一个元组,不能直接 Student(i) 这样会报错,需要先把 i 解包,然后再输入 Student,相当于 Student( 201610081, '张三', 18)
Python进阶学习(1)_第1张图片

如何根据字典中某一项的大小来排序字典

  • 方法一:
diction = {
    'zhangsan': 97,
    'lisi': 64,
    'wangwu': 81
}

d = [(v,k) for k,v in diction.items()] # 先把字典中的各个条目以元组的方式呈现
print(d)

print(sorted(d,reverse=True))	# 将需要排序的数放在元组中的第一个位置,利用元组排序的性质
d_new = enumerate(d,start=1)	# 通过enumerate 来对列表中的每个元组分配序号
d_new = list(d_new)

diction_new = {'%s' % name: (result,position) for position,(result,name) in d_new}		#重新生成新的字典
print(diction_new)

Python进阶学习(1)_第2张图片- 方法二:

直接用sorted 方法针对字典中 item 的 key 来排序就可以

diction = {
    'zhangsan': 97,
    'lisi': 64,
    'wangwu': 81
}
x = sorted(diction.items(),key=lambda item: item[1],reverse=True)
print(x)

lambda 针对的是字典中每一个元组 items(),key 是 item中的 item[1] 即分数的那一项

你可能感兴趣的:(Python学习笔记,python)