07 python 字典相关整理(创建字典-键值对-内置函数调用方法实例)

字典可以存储任意类型的对象,字典中的数据存储形式是:每一个键key对应一个值value,键是唯一的,但是值可以相同。字典用{}来表示,如:

d = {"name":"Tom","Age":10,"hobby":"swimming"}

关于字典:

1、键不可变,可使用数字、字符串或元组充当,但是不能使用列表作为键值。
如:

d1 = {'1':20}
d2 = {(2,):30}
print(d1['1'],d2[(2,)])

输出

20 30

如果下面这样定义:

d3 = {[2]:40}
print(d3[[2]])

此时会出错:

TypeError: unhashable type: 'list'

2、值可变,可以对键对应的值进行修改。

索引字典中的值

#创建字典
d = {"name":"Tom","Age":10,"hobby":"swimming"}
#索引
print(d)
print(d["name"],d["Age"])

输出

'name': 'Tom', 'Age': 10, 'hobby': 'swimming'}
Tom 10

修改字典中的值

#修改字典中的值
d["Name"] = "Alex"
d["Age"] = 20
print("修改后的值为:",d["Name"],d["Age"])

输出:

修改后的值为: Alex 20

字典中内置函数
len() 字典长度
str() 输出字典以打印的字符串表示
type() 返回类型
字典中内置方法

方法 A说明
d.clear() 清空字典,所有元素
d.copy() 浅拷贝字典
d.fromkeys 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
d.get(key,default=None) 返回指定键的值,如果值不在字典中返回default值
dict.get(key, default=None) 返回指定键的值,如果值不在字典中返回default值
key in d 如果键在字典dict里返回true,否则返回false
d.items() 以列表返回可遍历的(键, 值) 元组数组
d.keys() 返回一个迭代器,可以使用 list() 来转换为列表
dict.setdefault(key, default=None) 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
d.update(dict2) 把字典dict2的键/值对更新到dict里
d.values() 返回一个迭代器,可以使用 list() 来转换为列表
d.pop(key[,default]) 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
d.popitem() 随机返回并删除字典中的一对键和值(一般删除末尾对)。

d.clear()

dict1= {'name':'Thea','age':13}
print("原字典:",dict1)
#清空字典
dict1.clear()
print("新字典:",dict1)

输出

原字典: {'name': 'Thea', 'age': 13}
新字典: {}

d.copy 浅拷贝
复制与浅拷贝的区别:
复制相当于引用,即给原字典起了一个别名,而浅拷贝是,对一级目录直接拷贝,不会改变,而对二级目录是浅拷贝,只是引用。

#浅拷贝copy
Alex = [12,'sing']
Thea = [20,'dance']
dict1= {'Alex':Alex,'Thea':Thea}

dict_cp1 = dict1
dict_cp2 = dict1.copy()
dict1['Alex']= Thea
print("这是字典dict1:",dict_cp1)
print("复制 字典dict1:",dict_cp1)
print("浅拷贝 字典dict1,不会随着原字典改变:",dict_cp2)

输出:

这是字典dict1: {'Alex': [20, 'dance'], 'Thea': [20, 'dance']}
复制 字典dict1: {'Alex': [20, 'dance'], 'Thea': [20, 'dance']}
浅拷贝 字典dict1,不会随着原字典改变: {'Alex': [12, 'sing'], 'Thea': [20, 'dance']}

d.fromkeys()

#从列表中获取键值创建列表
key_list =["name","age","hobby"]
val = "test"

d= {}
#不指定值
d = d.fromkeys(key_list)
print("新字典",d)

#指定值
d = d.fromkeys(key_list,val)
print("新字典",d)

输出

新字典 {'name': None, 'age': None, 'hobby': None}
新字典 {'name': 'test', 'age': 'test', 'hobby': 'test'}

dict.get(key, default=None)

dict1= {'name':'Thea','age':13}
print("获取键值:",dict1.get('name'))
print("获取键值不存在时返回:",dict1.get('hh'))

key in d

#key in d 返回true或false
dict1= {'name':'Thea','age':13}
print('name' in dict1)
#返回键值元组
print("返回键值元组:",dict1.items())

输出

    True
返回键值元组: dict_items([('name', 'Thea'), ('age', 13)])

d.keys()

#返回迭代器,转为一个列表
dict1= {'name':'Thea','age':13}
print(list(dict1.keys()))

输出

['name', 'age']

dict.setdefault(key, default=None)

print("原字典:",dict1)
print("返回'name'的值:",dict1.setdefault('name',None))
print("不存在的键,可以添加,默认值:",dict1.setdefault('gender','man'))

print("新字典:",dict1)

输出:

原字典: {'name': 'Thea', 'age': 13}
返回'name'的值: Thea
不存在的键,可以添加,默认值: man
新字典: {'name': 'Thea', 'age': 13, 'gender': 'man'}

dict1.update()

#dict1.update()将dict1中的键值更新到dict2中
dict1= {'name':'Thea','age':13}
dict2= {}
print("更新后的dict2",dict2.update(dict1))

输出:

更新后的dict2 {'name': 'Thea', 'age': 13}

d.values

#d.values 返回迭代器
print("返回一个迭代器:可以转为列表:",list(dict1.values()))

输出:

返回一个迭代器:可以转为列表: ['Thea', 13]

pop() 和popitem()

#删除键值,返回被删除的键对应的值
print("返回被删除的键对应的值:",dict1.pop('age'))

#随机删除一对键值,一般从结尾删
dict1= {'name':'Thea','age':13}
print("随机删除字典中的一对键值,返回被删除的键值:",dict1.popitem())

print("随机删除键值的字典:",dict1)

输出:

返回被删除的键对应的值: 13
随机删除字典中的一对键值,返回被删除的键值: ('age', 13)
随机删除键值的字典: {'name': 'Thea'}

猜你喜欢

转载自blog.csdn.net/qq_42397914/article/details/81410551