1.现有字典 d= {‘a’:24,’g’:52,’i’:12,’k’:33}请按value值进行排序?
sorted(d.items(), key=lambda x:x[1])
# d.items():以列表的形式返回可遍历的元组数据
# x[0]代表用key进行排序;x[1]代表用value进行排序。
1.sorted函数,sorted(iterable,key,reverse), sorted一共有iterable,key,reverse这三个参数。
其中iterable表示可以迭代的对象,例如可以是dict.items()、dict.keys()等,key是一个函数,用来选取参与比较的元素,reverse则是用来指定排序是倒序还是顺序,reverse=true则是倒序,reverse=false时则是顺序,默认时reverse=false。
2.按key值排序的话直接用sorted(d.keys()), 倒序:sorted(d.keys(), reverse=true)
sorted函数按value值对字典排序,需要用到key参数,lambda x:x[1]意思是选取元组中的第二个元素作为比较对象,若想选第一个则是lambda x:x[0],可知第一个是key,第二个是value;lambda x:y中x表示输出参数,y表示lambda函数的返回值
2.字典推导式
d = {key: value for (key, value) in iterable}
iterable为可迭代可遍历的对象
例如:生成一个包含4个随机数的字典
import random
randomdict = {i:random.randint(10, 100) for i in range(1, 5)}
print(randomdict)
3.反转字符串 “aStr”
print("aStr"[::-1])
4.将字符串 “k:1 |k1:2|k2:3|k3:4”,处理成字典 {k:1,k1:2,…}
str1 = "k:1|k1:2|k2:3|k3:4"
def str2dict(str1):
dict1 = {}
for iterms in str1.split('|'):
key,value = iterms.split(':')
dict1[key] = value
return dict1
#字典推导式
d = {k:int(v) for t in str1.split("|") for k, v in (t.split(":"), )}
['k:1', 'k1:2']
'k:1'
['k',1]
1.str1.split(‘|’)为[‘k:1’, ‘k1:2’, ‘k2:3’, ‘k3:4’],for iterms in str1.split(‘|’)遍历该列表
key,value = iterms.split(‘:’) 解偶,iterms.split(‘:’) 为[k,1],[k1,2],key对应k,k1,k2,k3
value对应1,2,3,4;dict1[key] = value往空字典里添加键值对,{k:1,k1:2,…}
5. 请按alist中元素的age由大到小排序
alist = [{'name':'a','age':20},{'name':'b','age':30},{'name':'c','age':25}]
def sort_by_age(list1):
return sorted(alist, key=lambda x:x['age'], reverse=True)
传入一个可迭代对象,alist,由于是按照value排序,所以要传key参数,key=lambda x:x[‘age’],landba表达式返回age的值,reverse=True按照倒序排序
6.下面代码的输出结果将是什么?
list = ['a','b','c','d','e']
print(list[10:])
代码将输出一个空列表[],不会产生indexError错误
7.写一个列表生成式,产生一个公差为11的等差数列
print([x*11 for i in range(10)])
8.给定两个列表,怎么找出他们相同的元素和不同的元素?
list1 = [1,2,3]
list2 = [3,4,5]
set1 = set(list1)
set2 = set(list2)
print(set1 & set2)
print(set1 ^ set2)
1.通过set()函数去重并且将list变成set集合,通过按位与运算符&得出两个集合相同的元素,通过按位异或运算的运算符^得出不同的元素
9.请写出一段python代码实现删除list里面的重复元素?
list1 = [1, 2, 2, 3, 4, 4, 7, 8, 9]
list2 = list(set(list1))
print(list2)
1.利用set()函数把去重,然后组成新的列表
l1 = ['b','c','d','c','a','a']
l2 = list(set(l1))
l2.sort(key=l1.index)
print(l2)
l1 = ['b','c','d','c','a','a']
l2 = [] for i in l1:
if i not in l2:
l2.append(i)
print(l2)
19. 给定两个list A,B ,请找出A,B中相同与不同的元素
print(set(A) & set(B))
print(set(A) ^ set(B))