数据结构

 一、排序

sort( )方法和sortet()函数

1、sort() 方法

记住,只有list有sort()方法,因为 list 1有序, 2可变 惹要排序,这两个条件缺一不可

list 调用 sort() 方法后,会改变原来list的顺序

str tuple 这两个序列元素不可变,改变其元素将会返回一个新的对象,set 和 dict 无序,所以都没有sort() 方法

lis = [2,6,3,4,1,9,5]
lis.sort()
print(lis)

输出:[1, 2, 3, 4, 5, 6, 9]

 

2、sorted() 函数

注意,sorted() 函数可以对str tuple list set dist所以系列排序,并且返回一个list对象,注意,返回的对象是list

def dictionairy():
    key_value = {}
    # 初始化
    key_value[2] = 56
    key_value[1] = 2
    key_value[5] = 12
    key_value[4] = 24
    key_value[6] = 18
    key_value[3] = 323

    # 因为字典的无序的,所有字典没有sort()方法,但是我们可以根据自己的需要调用sorted()方法对字典进行排序
    # key_value.sort() 错,dict没有sort方法

    print(sorted(key_value))  # [1, 2, 3, 4, 5, 6]
    print(sorted(key_value.keys()))  # [1, 2, 3, 4, 5, 6]
    print(sorted((key_value.values())))  # [2, 12, 18, 24, 56, 323]
    print(sorted(key_value.items()))  # [(1, 2), (2, 56), (3, 323), (4, 24), (5, 12), (6, 18)]

    print("按键(key)排序:")
    for i in sorted(key_value):
        print((i, key_value[i]), end=" ")
    # (1, 2), (2, 56), (3, 323), (4, 24), (5, 12), (6, 18)

    print()
    print("按值(value)排序:")
    # 匿名函数把key和value的位置对换一下,或者直接返回value,key可以忽略。
    print(sorted(key_value.items(), key=lambda kv: kv[1]))
    # [(1, 2), (5, 12), (6, 18), (4, 24), (2, 56), (3, 323)]



dictionairy()

# 列表字典排序

lis = [{"name": "Taobao", "age": 100},
       {"name": "Runoob", "age": 7},
       {"name": "Google", "age": 100},
       {"name": "Wiki", "age": 200}]
# 用list的sort()方法排序:会改变原来list的顺序
print("用list的sort()方法排序: ")
lis.sort(key=lambda item:item['age'],reverse=True)
print(lis)

#  用全局函数sorted排序:不会改变原来list的顺序,而是返回一个新的list
# 通过 age 升序排序
print("列表通过 age 升序排序: ")
l = sorted(lis, key=lambda i: i['age'])
print(l)
print(lis)

# 先按 age 排序,再按 name 排序
print("列表通过 age 和 name 排序: ")
print(sorted(lis, key=lambda i: (i['age'], i['name'])))



# 按 age 降序排序
print("列表通过 age 降序排序: ")
print(sorted(lis, key=lambda i: i['age'], reverse=True))


# 列表通过 age 升序排序:
# [{'name': 'Runoob', 'age': 7}, {'name': 'Taobao', 'age': 100}, {'name': 'Google', 'age': 100}, {'name': 'Wiki', 'age': 200}]
#
# 列表通过 age 和 name 排序:
# [{'name': 'Runoob', 'age': 7}, {'name': 'Google', 'age': 100}, {'name': 'Taobao', 'age': 100}, {'name': 'Wiki', 'age': 200}]
#
# 列表通过 age 降序排序:
# [{'name': 'Wiki', 'age': 200}, {'name': 'Taobao', 'age': 100}, {'name': 'Google', 'age': 100}, {'name': 'Runoob', 'age': 7}]

s = {'b','a','c'}
print(s)
s = sorted(s, reverse=True)
print(s)

lis = [2,6,3,4,1,9,5]
lis.sort()
print(lis)

 

 

二、同时遍历两个序列:用:zip() 该函数将两个序列合并成一个可迭代的序列

questions = ['name', 'quest', 'favorite color']
answers = ['lancelot', 'the holy grail', 'blue']
for q, a in zip(questions, answers):
    print(q, ":", a)

 

posted @ 2020-10-05 06:34  老谭爱blog  阅读(99)  评论(0)    收藏  举报