Python学习:str.find()方法、dict.get()方法、sort()函数、sorted()函数、

find()方法

Python find() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回-1。


str.find(str, beg=0, end=len(string))
	参数
		str -- 指定检索的字符串
		beg -- 开始索引,默认为0。
		end -- 结束索引,默认为字符串的长度。
	返回值
		如果包含子字符串返回开始的索引值,否则返回-1
str1 = "this is string example....wow!!!";
str2 = "exam";
 
print(str1.find(str2))
print(str1.find(str2, 10))
print(str1.find(str2, 40))

字典(Dictionary) get()方法

Python 字典 get() 函数返回指定键的值,如果值不在字典中返回默认值。

get()方法语法:
	dict.get(key, default=None)
参数
	key – 字典中要查找的键。
	default – 如果指定键的值不存在时,返回该默认值值。
	返回值
	返回指定键的值,如果值不在字典中返回默认值 None

get()函数的使用方法:

dict = {'Name': 'Runoob', 'Age': 27}

print ("Age 值为 : %s" %  dict.get('Age'))
print ("Sex 值为 : %s" %  dict.get('Sex', "NA"))
以上实例输出结果为:

Age 值为 : 27
Sex 值为 : NA

sort()函数

sort 与 sorted 区别:

sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
list 的 sort 方法返回的是对已经存在的列表进行操作,返回值为None,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。

用sort函数对列表排序时会影响列表本身,而sorted不会。

>>> a = [1,2,1,4,3,5]
>>> a.sort()
>>> a
[1, 1, 2, 3, 4, 5]
>>> a = [1,2,1,4,3,5]
>>> sorted(a)
[1, 1, 2, 3, 4, 5]
>>> a
[1, 2, 1, 4, 3, 5]
sort() 函数用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数。
sort()方法语法:
	list.sort( key=None, reverse=False)
参数
	key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
	reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。
返回值
	该方法没有返回值,但是会对列表的对象进行排序。
# 获取列表的第二个元素
def takeSecond(elem):
    return elem[1]
 
# 列表
random = [(2, 2), (3, 4), (4, 1), (1, 3)]
 
# 指定第二个元素排序
random.sort(key=takeSecond)
 
# 输出类别
print ('排序列表:', random)

sorted()函数

sorted 语法:
	sorted(iterable, key=None, reverse=False)  
参数说明:
	iterable -- 可迭代对象。
	key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
	reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
返回值
	返回重新排序的列表。

sorted的第一个参数是一个迭代器,第二个参数是用来排序的key,第三个参数的排序数序:正序还是倒序
第一个参数是迭代器

>>> sorted([36, 5, -12, 9, -21])
[-21, -12, 5, 9, 36]

第二个参数是用来排序的key

>>> sorted([36, 5, -12, 9, -21], key=abs)
[5, 9, -12, -21, 36]

key指定的函数将作用于list的每一个元素上,并根据key函数返回的结果进行排序。对比原始的list和经过key=abs处理过的list:
list = [36, 5, -12, 9, -21]
keys = [36, 5, 12, 9, 21]
第三个参数决定正向还是反向排序:
要进行反向排序,不必改动key函数,可以传入第三个参数reverse=True:

>>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower, reverse=True)
['Zoo', 'Credit', 'bob', 'about']
student_tuples = [('john', 'A', 15),
                  ('jane', 'B', 12),
                  ('dave', 'B', 10)]
new_tuples = sorted(student_tuples, key=lambda student: student[2])
print(student_tuples)
print(new_tuples)

由于这种含有key参数的方法很普遍,所以python中提供了一些方法使得访问器函数更加方便。比如operator模块中的itemgetter(), attrgetter()方法。

from operator import itemgetter, attrgetter

class Student:
    def __init__(self, name, grade, age):
        self.name = name
        self.grade = grade
        self.age = age

student_objects = [Student('john', 'A', 15),
                   Student('jane', 'B', 12),
                   Student('dave', 'B', 10)]
student_tuples = [('john', 'A', 15),
                  ('jane', 'B', 12),
                  ('dave', 'B', 10) ]

result1 = sorted(student_tuples, key=itemgetter(2))  # 通过元素的第三个值排序
result2 = sorted(student_objects, key=attrgetter('age'))  # 通过对象的age属性排序
result3 = sorted(student_tuples, key=itemgetter(1,2))  # 首先通过元素的第一个值排序,然后通过第二个值排序
result4 = sorted(student_objects, key=attrgetter('grade', 'age'))  # 通过对象的grade属性排序,后通过age属性排序

排序是保证稳定可靠的,当排序的key对应的值相同时,会保持它们在原数据中的顺序,比sort里的第3个例子如以下代码运行结果:

from operator import itemgetter
data = [('red', 1), ('blue', 1), ('red', 2), ('blue', 2)]
print(sorted(data, key=itemgetter(0)))

#[('blue', 1), ('blue', 2), ('red', 1), ('red', 2)]

示例: sorted对字典进行排序

sorted(iterable,key,reverse),sorted一共有iterable,key,reverse这三个参数。

对字典排序,可以根据key,进行排序,对value排序,需要用到key`

  1. 要按key值对字典排序,则可以使用如下语句:
dic = {'c': 10, 'a': 8, 'b': '3'}
sorted(dic.keys())

#结果:['a', 'b', 'c']

直接使用sorted(d.keys())就能按key值对字典排序,这里是按照顺序对key值排序的,如果想按照倒序排序的话,则只要将reverse置为true即可。

  1. sorted函数按value值对字典排序
    要对字典的value排序则需要用到key参数,在这里主要提供一种使用lambda表达式的方法,如下:
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值