python 字典详解

一.字典的创建

字典是另一种可变容器模型,且可存储任意类型对象。每一个元素都以键值对的形式存在,一个字典中键是唯一的,值不唯一。

1.用“{ }”创建字典

字典的每个键值对 key:value ,每个对之间用逗号“,”分割,整个字典包括在花括号 {} 中 ,基本格式:

dict = {key1 : value1, key2 : value2, key3 : value3 }
参数:
	key1, key2,key3 -- 字典的键
	value1,value2, value3 -- 字典的值

示例1:

dict = {}   #创建一个空字典
print(dict)
print(type(dict))

运行结果:

{}
<class 'dict'>

示例2:

dict = {1:'python',2:'java','a':3,'b':4}   
print(dict)

运行结果:

{1: 'python', 2: 'java', 'a': 3, 'b': 4}

2.dict() 函数创建字典

示例:

log1 = dict()                        # 创建空字典
print(log1)

log2 = dict(name='Jerry', age=19, height=190)     # 传入关键字
print(log2)

#zip()创建可迭代对象
log3 = dict(zip(['one', 'two', 'three'], [1, 2, 3])) # 映射函数方式来构造字典
print(log3)

#以元组的形式组成序列创建字典
log4 = dict([('one', 1), ('two', 2), ('three', 3)])    # 可迭代对象方式来构造字典
print(log4)

运行结果:

{}
{'name': 'Jerry', 'age': 19, 'height': 190}
{'one': 1, 'two': 2, 'three': 3}
{'one': 1, 'two': 2, 'three': 3}

zip()创建可迭代对象,传递在运行时将键和值的序列进行zip配对的结果,例如从文件中读取数据配对来创建字典。

在第一次用dict() 函数创建字典时,可能会出现下面问题:  
TypeError: 'dict' object is not callable
原因:  dict()是python的一个内建函数,如果将dict自定义为一个python字典,在之后想调用dict()函数是会报出“TypeError: 'dict' object is not callable”的错误。
解决办法:在创建dict()函数前面加上:del (dict) 

3.fromkeys() 创建字典

示例:

seq = ['小明','小刚','小东']
value = ['打篮球','跑步','弹钢琴'] #可以初始每个人的共同属性
#fromkeys(seq,value)
my_dict = dict.fromkeys(seq, value)#创建一个新的字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
print(my_dict)

运行结果:

{'小明': ['打篮球', '跑步', '弹钢琴'], '小刚': ['打篮球', '跑步', '弹钢琴'], '小东': ['打篮球', '跑步', '弹钢琴']}

二.获取字典的元素

基本格式:

dict.get(k,[default]) -- 获得k(键)对应的值,不存在则返回default

dict.items() -- 获得由键和值组成的元组,作为元素的列表

dict.keys() -- 获得键的迭代器

dict.values() -- 获得值的迭代器

调用get() 时,如果没有指定第二个参数且指定的键不存在,Python将返回值None 。这个特殊值表示没有相应的 值。None 并非错误,而是一个表示所需值不存在的特殊值。
示例:

dict1 = {'name': 'jerry', 'age': 18}

#通过key值来获取对应的value
print(dict1['name'])
print(dict1.get('name'))

#获取键值对
print(dict1.items())

#获取键
print(dict1.keys())

#获取值
print(dict1.values())

运行结果:

jerry
jerry
dict_items([('name', 'jerry'), ('age', 18)])
dict_keys(['name', 'age'])
dict_values(['jerry', 18])

三.字典元素的删除

dict.pop(k) -- 删除k(键)对应的键:值对

dict.popitem() -- 从字典中删除任一k:value元素,并返回它

dict.clear() -- 清空字典

del -- 删除对应的键值对

1.通过pop()方法删除指定键

示例:

dict2 = {'name': 'jerry', 'age': 18}
dict2.pop('age') #删除指定给定键所对应的值,返回这个值并从字典中把它移除
print(dict2)

运行结果:

{'name': 'jerry'}

2.通过del删除

示例:

dict2 = {'name': 'jerry', 'age': 18}
del dict2['name'] 
print(dict2)

运行结果:

{'age': 18}

3.通过popitem()删除

示例:

dict3 =  {'name': 'join', 'age': 25,'gender': 'man'}
dict3.popitem()
dict3.popitem()   #从后往前删
print(dict3)

运行结果:

{'name': 'join'}

4.通过clear()删除

示例:

dict4 = {'name': 'join', 'age': 25,'gender': 'man'}
dict4.clear()   #清除所有元素
print(dict4)

运行结果:

{}

四.setdefault() 返回指定键的值,如果键不在字典中,将会返回特定值

示例:

dict4 = {'name': 'Jerry', 'age': 25, 'gender': 'man'}
print('字典中存在的key,返回对应value:', dict4.setdefault('age', 0))#该方法接收两个参数,第一个参数是键的名称,第二个参数是默认值
print('字典中不存在的key,返回默认值:', dict4.setdefault('age1', -1))

运行结果:

字典中存在的key,返回对应value: 25
字典中不存在的key,返回默认值: -1

五.copy() 复制字典

示例:

dict4 = {'name': 'Jerry', 'age': 25, 'gender': 'man'}
dict5 = dict4.copy()
print(dict5)

运行结果:

{'name': 'Jerry', 'age': 25, 'gender': 'man'}

六.for循环遍历字典

1.遍历字典的键和值

示例:

#因此有多种遍历方式:可遍历字典的所有键值对,也可仅遍历键或值。
user_0 = {
'username': 'efermi',
'first': 'enrico',
'last': 'fermi',
}
for key, value in user_0.items():
    print(f"\nKey: {key}")
    print(f"Value: {value}")

运行结果:

Key: username
Value: efermi

Key: first
Value: enrico

Key: last
Value: fermi

2.遍历字典的键

示例:

#遍历字典中的所有键
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
for name in favorite_languages.keys():
    print(name.title())

运行结果:

Jen
Sarah
Edward
Phil

3.遍历字典的值

示例:

#遍历字典中的所有值
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
for language in favorite_languages.values():
    print(language.title())

运行结果:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值