字典的使用

字典

Python中的字典属于散列类型,其数据内容是以键值对的形式存在。即{key:value,key:value,key:value}的形式,其中,key值是不可变类型,value是可变类型。key值不能相同,但是value可以相同,若key值相同,则无法存入字典,可以通过key值修改字典value,直接通过键值添加。

新建

方法一:{}

# 新建空字典
a = {}

# 新建字典并赋值
a = {1:222}
print(a,type(a))

>>>{1: 222} <class 'dict'>

方法二:dict()

# 新建空字典
a = dict()

# 新建字典并赋值
a = dict(a=1, b=2)
print(a, type(a))

>>>{'a': 1, 'b': 2} <class 'dict'>

方法一:dict[key] = value

# 使用下标索引并赋值
a = dict()
a['a'] = 1
print(a, type(a))

>>>{'a': 1} <class 'dict'>

方法二:setdefault(key, value)

#key值已存在则查询并返回value值,无则增加,若value省略,则默认value值为None。

a = {1:2}
print(a.setdefault(1,3))
print(a)
print(a.setdefault(2))
print(a)
print(a.setdefault(3,4))
print(a)

>>>2
>>>{1: 2}
>>>None
>>>{1: 2, 2: None}
>>>4
>>>{1: 2, 2: None, 3: 4}

方法一:pop()

# pop() 删除某一个键值对 pop(key),并返回该键对应的值
a = {'a': 111, 'b': 222}
print(a.pop('a'))
print(a)

>>>111
>>>{'b': 222}

方法二:popitem()

# popitem() 不带参数,随机删除一个键值对,并返回该键值对
a = {'a': 111, 'b': 222, 'c': 333, 'd': 444}
print(a.popitem(), type(a.popitem()))
print(a)

>>>('d', 444) <class 'tuple'>
>>>{'a': 111, 'b': 222}

方法三:clear()

# clear() 清空字典
a = {'a': 111, 'b': 222, 'c': 333, 'd': 444}
a.clear()
print(a)

>>>{}

方法一:dict[key] = value

# 直接使用索引赋值修改
a = {'a': 1}
a['a'] = 2222
print(a)

>>>{'a': 2222}

方法二:update({key,value})

# update({key,value}) 更新key的value值
a = {'a': 2}
a.update({'a':2222})
print(a)

>>>{'a': 2222}

方法一:下标索引

# 下标索引的key值存在则返回,无则报错,建议使用get()方法
a = {'a': 111, 'b': 222, 'c':333, 'd': 444}
print(a['b'])
print(a['e'])
>>>222
>>>KeyError: 'e'

方法二:get(key)

#get(key),若不存在返回None,对于不确定是否存在的key,建议使用get()方法查询

a = {'a': 111, 'b': 222, 'c':333, 'd': 444}
print(a.get('a'))
print(a.get('e'))

>>>111
>>>None

遍历

遍历key值

方法一:字典迭代
# 字典是可迭代对象,迭代的元素为key

a = {'a': '1', 'b': '2', 'c': '3'}
print([key for key in a])
    
>>>['a', 'b', 'c']
方法二:keys()
# keys() 取出所有的key值,返回dict_keys对象,也是可迭代对象

a = {'a': '1', 'b': '2', 'c': '3'}
print(a.keys(),type(a.keys()))

>>>dict_keys(['a', 'b', 'c']) <class 'dict_keys'>

遍历value值

方法一:values()
# keys() 取出所有的key值,返回dict_keys对象,也是可迭代对象

a = {'a': '1', 'b': '2', 'c': '3'}
print(a.values())

dict_values(['1', '2', '3']) <class 'dict_values'>

遍历健值对

方法一:key索引
a = {'a': 1, 'b': 2, 'c': 3}
for key in a:
    print(key+':'+a[key])
    
>>>a:1
>>>b:2
>>>c:3
方法二:items()
# items() 返回的是(key,value)的元组
a = {'a': 1, 'b': 2, 'c': 3}
for key, value in a.items():
    print(key+':'+value)
    
>>>a:1
>>>b:2
>>>c:3

类型转换

元组转字典

a = [('a', 1), ('b', 2), ('c', 3), ('d', 4)]
print(dict(a))

>>>{'a': 1, 'b': 2, 'c': 3, 'd': 4}

列表转字典

方法一:二维数组转字典,dict()
a = [['a', 1], ['b', 2], ['c', 3]]
print(dict(a))

>>>{'a': 1, 'b': 2, 'c': 3}
方法二:两个列表转字典,zip()
# 利用zip()函数先把两个列表转为元组,再由元组转为字典
list1 = ["a", "b", "c", "d"]
list2 = [1, 2, 3, 4]
print(dict(zip(list1, list2)))

>>>{'a': 1, 'b': 2, 'c': 3, 'd': 4}

高级用法

查询字典中最大、小的value值对应的key值

# 比较的字典的value值,返回的是key
a = {'a': 3, 'b': 2, 'c': 1}
print(min(a, key=a.get))
>>>c

【说明】max/min函数对可迭代对象进行遍历比较操作,字典的遍历是对key值的遍历,min()中的key参数是字典的get()函数,且把遍历的key值传入get()函数中

# 比较的是字典的key值,返回的是key
print(min(a))
>>>a

使用字典拼接字符串

# 字符串模板中使用key
book = {'name': 'old man and sea', 'price': 99.99, 'publish': 'Huawei'}
temp = '书名:%(name)s, 价格:%(price)010.2f, 出版社:%(publish)s'
print(temp % book)

>>>书名:old man and sea, 价格:0000099.99, 出版社:Huawei
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值