python字典

一. 字典(dict)

  1. 定义:key-value,键和值可以为任意类型。
#定义方式
dict_tmp = {"name":"san shi", 18:"age"}
print(dict_tmp[18])
#print(dict_tmp["xxx"]) 访问不存在的键会报KeyError

dict_tmp2 = {} #一定要先声明是一个字典再添加元素,否则会报错
dict_tmp2[18] = "age"
dict_tmp2["name"] = "san shi"

#字典在python中是无序的,所以只要成员相同就相等
print(dict_tmp == dict_tmp2)

#dict的value可以为任意类型
dict_tmp2[1] = {0:0, 1:1}
dict_tmp2[2] = (1, 2, 3)
dict_tmp2[3] = [11, 22, 33]
#dict的key只能是不可变类型,官方话是hashable类型
dict_tmp2[(1, 2, 3)] = 111 #ok,tuple不可变
#dict_tmp2[[1, 2, 3]] = 222 error,list和dict是可变类型,不可作为key

二. 字典方法

  1. keys返回dict_keys类型,values返回dict_values类型,items返回dict_items类型
dict_tmp = {"name":"san shi", 18:"age"}

#keys
print(dict_tmp.keys()) #dict_keys(['name', 18])
for i in dict_tmp.keys():
    print(i) #依次打印 name、18

#values
print(dict_tmp.values()) #dict_values(['san shi', 'age'])
for i in dict_tmp.values():
    print(i) #依次打印 san shi、age

#items
print(dict_tmp.items()) #dict_items([('name', 'san shi'), (18, 'age')])

#items遍历变量有一个:返回为元组
for i in dict_tmp.items():
    print(i)
#依次打印如下:
	#('name', 'san shi')
 	#(18, 'age')

#items遍历变量有两个:将元组中元素分别赋给每一个
for i,j in dict_tmp.items():
    print("dict_tmp[{0}] = {1}" .format(i, j))
#依次打印如下
	#dict_tmp[name] = san shi
	#dict_tmp[18] = age

dict_keys、dict_values、dict_items可以使用list()或tuple()进行转换。

  1. 可以使用in/not in:
dict_tmp = {"name":"san shi", 18:"age"}

print("name" in dict_tmp) #True,默认在keys中搜索
print("name" in dict_tmp.keys()) #同上
print("age" in dict_tmp.values()) #True
print((18, "age") in dict_tmp.items()) #True
  1. setdefault:不存在则赋给default值
dict_tmp = {}
for i in "i love you":
    #dict_tmp[i] = dict_tmp[i] + 1 会报KeyError,不能这样
    dict_tmp.setdefault(i, 0) #正确方式
    dict_tmp[i] = dict_tmp[i] + 1
  1. 还有其他方法,截图如下:
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值