Python字典(定义、访问、增、删、改、查)

1.定义

键值对,key-value,键必须唯一且为不可变类型

(1)类型

# d={[0,1]:2}  #报错:TypeError: unhashable type: 'list'
d1={(0,1):2}
# d={(0,1,[2]):2}  #报错:TypeError: unhashable type: 'list'
d2={"s":0,1:1}
# d={d1:2,{1,2,3}:3}   TypeError: unhashable type: 'dict'
#字符串、数字、不含可变类型的元组可以,可变类型:列表、字典、集合不行

字符串、数字、不含可变类型的元组可以,可变类型:列表、字典、集合不行

(2)唯一性

d={1:10,1:20,"s":30,"s":40}
print(d[1],d["s"])    #定义时可以重复,不报错,但相当于覆盖更新
print(d)

20 40
{1: 20, 's': 40}

定义时可以重复,不报错,但相当于覆盖更新

(3)由其它数据类型转化

a=[0,1,2,3,4,5]
b=[00,11,22,33,44,55]
c=[[0,00],[1,11],[2,22],[3,33],[4,44],[5,55]]
print(dict(zip(a,b)),dict(c))

{0: 0, 1: 11, 2: 22, 3: 33, 4: 44, 5: 55} {0: 0, 1: 11, 2: 22, 3: 33, 4: 44, 5: 55}

2.访问

(1)字典名[键名] 直接访问,但是访问了不存在的键会直接报错

(2)get方法

①访问了不存在的键至少不报错

②默认返回值为None,也可以手动设置

d={1:20,"s":30}
#1
print(d["s"])
# print(d["h"])  #KeyError: 'h'

#2
print(d.get("s", "404"))
print(d.get("h"))
print(d.get("h", "404"))

30
30
None
404

3.增

d={1:20,"s":30}
d["h"]=40
print(d)

{1: 20, 's': 30, 'h': 40}

4.删

(1)del 字典名[键名]  #删除键值对

        del 字典名  #删除整个字典

(2)clear方法  #清空

d={1:20,"s":30}
# del d["h"]  #KeyError: 'h'没找到会报错
d.clear()
print(d)

{}

5.改

6.查

(1)方法遍历

操作方法结果形式
获取所有键keys()dict_keys,可转为列表
获取所有值values()dict_values,可转为列表
获取所有项items()dict_items,可转为列表(元素为元组)

(2)多变量填充赋值

for   keys,values    in     列表名.items():

就像用枚举函数获得循环时的下标一样

这应该是Python的一个特性,多变量赋值,MATLAB里也有

所以Python函数中可以有多返回值

d = {1: 20, "s": 30}
print(d.keys(), type(d.keys()), list(d.keys()), sep="\t")
print(d.values(), type(d.values()), list(d.values()), sep="\t")
print(d.items(), type(d.items()), list(d.items()), sep="\t")
a, b = d.items()
print(a, b)
for k, v in d.items():
    print(k,v)

dict_keys([1, 's'])    <class 'dict_keys'>    [1, 's']
dict_values([20, 30])    <class 'dict_values'>    [20, 30]
dict_items([(1, 20), ('s', 30)])    <class 'dict_items'>    [(1, 20), ('s', 30)]
(1, 20) ('s', 30)
1 20
s 30

7.其它

d = {1: 20, "s": 30}
print(list(d))

[1, 's']

直接转换,只保留了键

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值