python基础——字典常用方法集合

目录

字典描述

字典基础操作

字典排序(sorted)

字典合并

字典解包


字典描述

  • 字典是python语言中唯一的映射类型。
  • 映射类型对象里哈希值(key)和指向的对象(value)是一对多的关系,通常被认为是可变的哈希表。
  • 字典对象是可变的,它是一个容器类型,能存储任意个数的python对象,其中也可包括其他容器类型。
  • 字典的键名必须是唯一的不可变的,能够作为字典的键名的有字符串,元组、数字、布尔值。

 

字典类型与序列类型的区别:

  1. 存取和访问数据的方式不同
  2. 序列类型只用数字类型的键(从序列的开始按数值顺序索引)
  3. 映射类型可以用其他对象类型作键(如:数字、字符串、元组,一般用字符串作键),和序列类型的键不同,映射类型的键直接或间接的和存储数据值相关联。
  4. 映射类型中的数据是无序排列的。这和序列类型是不一样的,序列类型是以数值序排列的。
  5. 映射类型用键直接“映射”到值。

字典基础操作

增:
#dic['hight'] = 100                    通过key强制改,有hight项就会更改,没有就会增加
#dic.setdefault('name','hello')        有则不变,无则增加,setdefault(key) 可通过key查,没有返回None
#formkeys                             (太坑别用)dict.fromkeys('abc', 'hello'),返回一个新的字典,原字典不变。
删:
#dic.pop('name')           按key值删除,返回被删除的value。 如果找不到对应的key会报错
                           如果不想报错,添加返回值参数,dic.pop('name','无name时的返回值')。
#dic.clear()               清空字典,只清空字典所有内容
#del  dic                  在内存中彻底删除字典
#del  dic('age')           也可以按key删除,找不到报错
#dic.popitem()             随机删除,返回一个元组 (key, value)
改:
#dic['hight'] = 100                    有hight项就会更改,没有就会增加
#update                                    dict2.update(dict1) 将dict1的内容覆盖更新到dict2中,dict1中的内容不变 
查:
#dic['name']         直接按key值查 找不到报错
#get()               dic.get('name')如果有这个键返回对应的value值,没有这个键会返回None   -------用这个
                     dic.get('name','没有此key')也可以设置返回值
#dic.setdefault(key) 有返回value 没有返回None
#for      循环查找    单循环只输出 key的值 

字典排序(sorted)

按value进行排序:

my_dict = {'CD': 12, 'XA': 60, 'BJ': 15, 'GZ': 100}
# 排序后,原dict中并没有变化 ,产生了一个新dict
value_sorted_result = sorted(my_dict.items(), key=lambda item: item[1], reverse=True)  # 按value进行降序
print(value_sorted_result) #[('GZ', 100), ('XA', 60), ('BJ', 15), ('CD', 12)]

按key进行排序:

my_dict = {'CD': 12, 'XA': 60, 'BJ': 15, 'GZ': 100}
# 排序后,原dict中并没有变化 ,产生了一个新dict
# 按key进行排序 
key_sorted_result = sorted(my_dict.items(), key=lambda item: item[0], reverse=True)  # 按key进行降序
print(key_sorted_result) #[('XA', 60), ('GZ', 100), ('CD', 12), ('BJ', 15)]

字典合并

方法一:update()方法

a = {'a': 1}
b = {'b': 1}
b.update(a)
print(b)    # 打印:{'a': 1, 'b': 1}

方法二:字典的{**a, **b}方法

d = {**a, **b}
print(d)    # 打印:{'a': 1, 'b': 1}

方法三:遍历并添加字典key,value

for k,v in a.items():
    b[k] = v

print(b)    # 打印:{'a': 1, 'b': 1}

字典解包

a,b = '12'   #将后边解构打开按位置赋值给变量 支持  字符串 列表 元组

字典解包: * keys ** values

a, b, c = {'name': '阿登', 'gender': '男', 'age': 18}
print(a,b,c,type(a),type(b),type(c))
  • 可以看出a b c接收了 字典的key
  • name gender age <class 'str'> <class 'str'> <class 'str'>
a, *b, c = adeng = {'name': '阿登', 'gender': '男', 'age': 18, 'love_into': 'eat apple', 'hobby':'数学'}
print(a,b,c,type(a),type(b),type(c))
  • 可以看出 a c接收的字典守尾的key b作为列表接收了剩余的key
  • name ['gender', 'age', 'love_into'] hobby <class 'str'> <class 'list'> <class 'str'>
def fo(name,salary):
    print("{:□^10}的工资是{}".format(name,salary))

dict_info = {"name": "阿登",'salary':16000}
# ** 两个星号解包是字典独有的,实际就是以key=value的形式传给函数
fo = fo(**dict_info) # □□□□阿登□□□□的工资是16000

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值