熟悉dict可以直接跳过前三部分
dict的三个方法
dict是python的字典类
比如{‘key1’:value_1,'key2':value_2}
就是key-value键值对
dict有三个方法:
1. items():返回所有(key,value)元组的数组,类似于‘列表’,确切的说python3是dict_items类
2. keys():返回所有key的‘列表’,确切的说python3是dict_keys类
3. values():返回所有value的‘列表’,确切的说python3是dict_values类
python3中这些函数返回的都不是列表,不支持索引,即不支持dict.key()[0]这样的操作
虽然支持for循环:
for key in dict.keys():
print(key)
可以将dict_items、dict_keys、dict_values转化成list:
list(dict.keys())
sort()与sorted()
sort()
list有一个sort方法,list.sort()将list进行排序,返回None
参考python3 官方doc
按照官方文档的说法:
sort的函数签名如下:
sort(*,key = None,reverse = False)
sort有两个参数,key和reverse,都是‘keyword-only argument’,就是必须用arg_name =** 的方式传递了参数,对于sort必须使用key = 或者reverse传递,当然也可以不传递,有默认值。
下面分别说说两个参数的作用:
key:
官方原话: key specifies a function of one argument that is used to extract a comparison key from each list element
作用如下:
首先,key是一个函数,这个函数的作用是从list的每个元素中提取用于当作排序依据的属性,也就是说key是一个函数,输入是list的每一个元素,输出的是用于排序的东西,默认的排序依据是list的单个元素。
举例子:
list = [(3,66),(5,3),(1,23)]
list的元素是一个元组,默认来说,list.sort()后,list=[(1,23),(3,66),(5,3)]
如果排序依据是每个元组的第二个元素,就应该写:
def f(item):
return item[1]
list.sort(key = f)
代码运行之后,list = [(5,3),(1,23),(3,66)]
这里的f可以直接写成lambda表达式,list.sort(key = lampda item:item[1])
lambda表达式解释见下文。
reserve这个参数的作用就是决定排序顺序是从小到大还是从大到小,默认是从小大到,即reserve为False的时候,如果reserve为True,排列顺序就是从大到小。
sorted()
sorted(iterable,*,key=None,reverse=False)
sorted函数有三个参数,后两个参数的作用与sort()的两个参数作用相同,这里不与赘述。
sorted函数对任何iterable的对象进行排序,然后将排序结果返回。
iterable的具体内涵,这里也不展开。
lambda表达式
lambda表达式其实就是匿名函数,至于为什么,参见为什么匿名函数叫lambda 表达式?
下面就是一个lambda表达式
lambda x:x*x
等价于
def f(x):
return x*x
lambda表达式可以作为右值传给一个变量,再利用这个变量调用lambda表达式。
也可以作为函数的返回值。
参考廖雪峰的python3教程
dict排序详解
sorted(dict.items(),key=lambda item:item[0])
返回的是排序后的dict的item的列表。