【python】字典常用方法

目录

  • 前言
    • 添加
    • 修改
    • 删除
  • update()
  • setdefault()
  • get()
  • keys()
  • values()
  • items()
  • copy()
  • pop()
  • popitem()
  • clear()
  • 可变与不可变
    • id()
    • 可变:修改元素,内存地址不会发生改变
    • 不可变:修改元素,内存地址也随之改变


前言

字典的key是唯一、不可变类型,value可以是任意数据类型。

dict1 = {"name": "小凛", "name": "20"}  # 当key一样时,后面的value会覆盖前面的value
print(dict1)

# 执行结果:
{'name': '20'}

添加

dict1 = {"姓名": "千寻", "年龄": "12"}

dict1["性别"] = "女"
print(dict1)

# 执行结果:
{'姓名': '千寻', '年龄': '12', '性别': '女'}

修改

dict1 = {"姓名": "千寻", "年龄": "12"}

dict1["年龄"] = "20"
print(dict1)

# 执行结果:
{'姓名': '千寻', '年龄': '20'}

删除

dict1 = {"姓名": "千寻", "年龄": "12"}

del dict1["年龄"]  # 删除key对应的键值对
print(dict1)

# 执行结果:
{'姓名': '千寻'}

update()

更新字典,将括号内的字典添加原字典中,如果key相同,value值覆盖

dict1 = {"姓名": "千寻", "年龄": "10", "爱好": "跳舞"}
dict2 = {"性别": "女", "爱好": "唱歌"}

dict1.update(dict2)
print(dict1)

# 执行结果:
{'姓名': '千寻', '年龄': '10', '性别': '女', '爱好': '唱歌'}

setdefault()

1.查询括号内key对应的value值
2.如果key不存在,则添加。value默认为None

dict1 = {"姓名": "千寻", "年龄": "10", "爱好": "跳舞"}

print(dict1.setdefault("年龄"))

# 执行结果:
10

dict1.setdefault("身份证","76543")  # 当dict1中不存在key "身份证"时会添加进去,value指定为"76543"
print(dict1)

# 执行结果:
{'姓名': '千寻', '年龄': '10', '爱好': '跳舞', '身份证': '76543'}

get()

查询括号内key对应的value值

dict1 = {"姓名": "千寻", "年龄": "10", "爱好": "跳舞"}

print(dict1.get("姓名"))

# 执行结果:
千寻

keys()

查询字典中所有的key

dict1 = {"姓名": "千寻", "年龄": "10", "爱好": "跳舞"}

print(dict1.keys())

# 执行结果:
dict_keys(['姓名', '年龄', '爱好'])

values()

查询字典中所有的value

dict1 = {"姓名": "千寻", "年龄": "10", "爱好": "跳舞"}

print(dict1.values())

# 执行结果:
dict_values(['千寻', '10', '跳舞'])

items()

查询字典中所有的键值对

dict1 = {"姓名": "千寻", "年龄": "10", "爱好": "跳舞"}

print(dict1.items())

# 执行结果:
dict_items([('姓名', '千寻'), ('年龄', '10'), ('爱好', '跳舞')])

for k, v in dict1.items():
    print(k, v)

# 执行结果:
姓名 千寻
年龄 10
爱好 跳舞

copy()

复制

dict1 = {"姓名": "千寻", "年龄": "10", "爱好": "跳舞"}

dict2 = dict1.copy()
print(dict2)

# 执行结果:
{'姓名': '千寻', '年龄': '10', '爱好': '跳舞'}

pop()

删除括号内key对应的键值对
返回值:当前key对应的value

dict1 = {"姓名": "千寻", "年龄": "10", "爱好": "跳舞"}

print(dict1.pop("爱好"))  # 返回当前被删除的键值对中key "爱好" 对应的value
print(dict1)

# 执行结果:
跳舞
{'姓名': '千寻', '年龄': '10'}

popitem()

删除最后一对键值对
返回值:最后一对键值对

dict1 = {"姓名": "千寻", "年龄": "10", "爱好": "跳舞"}

print(dict1.popitem()) 
print(dict1)

# 执行结果:
('爱好', '跳舞')
{'姓名': '千寻', '年龄': '10'}

clear()

清空字典中所有的键值对

dict1 = {"姓名": "千寻", "年龄": "10", "爱好": "跳舞"}

dict1.clear()
print(dict1)

# 执行结果:
{}

可变与不可变

前面提到字典的key是不可变类型,现在我们聊一聊什么是可变与不可变类型:
根据数据的id(在内存中的地址)是否改变,来区分它是可变类型还是不可变类型。

id()

返回当前对象在内存中的地址

可变:修改元素,内存地址不会发生改变

list1 = [1, 2, 3]
print(id(list1))  # 执行结果:1649339688512

list1.append(4)
print(id(list1))  # 执行结果:1649339688512

对于可变类型,可以直接使用方法,不需要重新赋值

不可变:修改元素,内存地址也随之改变

str1 = "hello"
print(id(str1))  # 执行结果:2793521275120

str2 = str1.replace("h", "H")  # 将字符串中的“h”替换为“H”
print(str2)      # 执行结果:Hello
print(id(str2))  # 执行结果:2793519599920

对于不可变类型,在进行一系列操作之后,需要重新赋值(让它重新开辟一个内存空间)

你可能感兴趣的:(python,开发语言)