Python3 字典及字典排序

Python3 字典及字典排序

一、字典

1、字典是一种可变容器模型,可以存储任意类型对象。

2、字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:

d = {key1 : value1, key2 : value2 }

3、键必须是唯一的,但值则不必。
值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。

4、一个简单的字典实例:

dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}

二、访问字典里的值

dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
 
print ("dict['Name']: ", dict['Name'])
print ("dict['Age']: ", dict['Age'])

三、修改字典

dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
 
dict['Age'] = 8               # 更新 Age
dict['School'] = "菜鸟教程"  # 添加信息
 
 
print ("dict['Age']: ", dict['Age'])
print ("dict['School']: ", dict['School'])

四、删除字典元素

dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
 
del dict['Name'] # 删除键 'Name'
dict.clear()     # 清空字典
del dict         # 删除字典
 
print ("dict['Age']: ", dict['Age'])
print ("dict['School']: ", dict['School'])

五、字典键的特性

1、不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住

dict = {'Name': 'Runoob', 'Age': 7, 'Name': '小菜鸟'}
 
print ("dict['Name']: ", dict['Name'])

2、键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行

dict = {['Name']: 'Runoob', 'Age': 7}
 
print ("dict['Name']: ", dict['Name'])

输出结果:
在这里插入图片描述

六、sorted()函数

讲字典排序之前,先把sorted()函数说清楚
1、sorted()函数语法

sorted(iterable, key=None, reverse=False) 

(1) iterable–可迭代对象
(2) key–主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序
(3)reverse–排序规则,reverse=True降序,reverse=False升序(默认)

2、函数返回重新排序的列表

七、字典排序

dic = {"Alice": 15, "Jerry": 35, "Wendy": 25}

print(sorted(dic.items(), key=lambda item: item[0]))
print(sorted(dic.items(), key=lambda item: item[1]))
print(sorted(dic.keys()))

输出结果:
在这里插入图片描述

八、字典排序应用举例

上周做的美团算法的一个编程题,题目大致是这样的:
给出一串字符串列表,要求对里面的单词进行排序,先按长度排序,短的在前,长的在后;如果长度相同,再按照字母排列,例如
输入:jiangsu, hefei,lianyungang,chengdu,
输出:hefei, chengdu,jiangsu,lianyungang
代码:

def CitySort(list_cities):
    list_citylen = []
    for i in list_cities:
        citylen = len(i)
        list_citylen.append(citylen)
    dict_city = dict(zip(list_cities, list_citylen))
    return(sorted(dict_city.items(), key=lambda item:item[1]))

def AsciiSort(len_sorted):
    list_city = []
    for j in len_sorted:
        list_city.append(j[0])
    list_first_letter = []
    for m in list_city:
        list_first_letter.append(m[0])
    dict_city = dict(zip(list_city, list_first_letter))
    return (sorted(dict_city.items(), key=lambda item: item[1]))

cities = input("请输入待排序单词:\n")
list_cities = cities.split(",")
len_sorted = CitySort(list_cities)
sorted_cities = AsciiSort(len_sorted)
list_city = []
for j in sorted_cities:
    list_city.append(j[0])
print(",".join(list_city))

输出如下:
在这里插入图片描述

参考链接1:https://www.runoob.com/python3/python3-dictionary.html
参考链接2:https://www.runoob.com/python3/python3-func-sorted.html
参考链接3:https://blog.csdn.net/jerry_1126/article/details/82456901

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值