Python中存在一种叫做字典
dictionary
的对象类型,用dict表示,字典中的元素用{ }括起来,字典是无序的。字典中的元素由键值对组成,即key-value
的形式。注意:字典中的键必须是不可变的数据类型,键可以是任意数据类型。字典具有如下的特点:
- 在字典中,键是唯一的,不能重复;值对应于键,能够重复
- 键值之间用
英文冒号:
隔开- 每一对键值对之间用
英文逗号,
隔开- 字典是可以进行原地修改的
元组不可变,可哈希hashable
,能够做字典中的键;列表是可变的,不可哈希unhashable
,能够做字典中的值- 在字典中通过键直接得到值,比列表中从头开读取数据要快的多;检索快捷、高效、数据越大越明显
创建字典
# 创建字典
mydict = {} # 创建空字典;空字典在实际编程中很有用处
print(mydict)
print(id(mydict))
mydict["name"] = "Peter"
print(id(mydict)) # 修改之后,内存中id不变,说明字典是原地修改的,可变的
person = {"name": "xiaoming", "age":18, "city": "shenzhen"}
print(person)
# 通过元组构建字典
name = (["python", "language"], ["shenzhen", "city"])
dic_tup = dict(name)
print(dic_tup)
name1 = dict(name="xiaoming", language="python", city="shenzhen")
print(name1)
# 通过fromkeys创建:只有当字典中的值相同时,才能使用该方法
website = {}.fromkeys(("first", "second"), "google") # 所有值的键都是google
print(website)
# 结果:
{}
2543227937128
2543227937128
{'name': 'xiaoming', 'age': 18, 'city': 'shenzhen'}
{'python': 'language', 'shenzhen': 'city'}
{'name': 'xiaoming', 'language': 'python', 'city': 'shenzhen'}
{'first': 'google', 'second': 'google'} # 使用fromkeys方法创建的字典中,值是相同的
访问字典的值
字典类型对象是通过键值对进行存储数据,只要知道键key
,就可以访问该键的值value
,本质上是一种映射关系
。
person = {"name": "xiaoming", "age":18, "city": "shenzhen"}
print(person["age"]) # 访问键age的值
person["sex"] = "male" # 增加键值对
print(person)
person["age"] = 20 # 修改字典中某个键的值
print(person)
# 结果
18
{'name': 'xiaoming', 'age': 18, 'city': 'shenzhen', 'sex': 'male'}
{'name': 'xiaoming', 'age': 20, 'city': 'shenzhen', 'sex': 'male'} # age的值已经被修改成20
字典基本操作
字典是可变的,能够对其中的元素进行操作,常用的基本操作有:
- len(d):返回字典d中键值对的数量
- d[key]:返回字典中键key的值
- d[key]=value:将值value赋给字典中的键key
- del d[key]:删除字典d中的键key
- key in d:检查字典d中是否含有键为key的项
city = {'suzhou': '0512', 'beijing':'011', 'shanghai':'012', 'xiamen':'0592'}
print(len(city)) # 返回字典的长度
city['nanjing'] = '025' # 添加一个键值对
print(city)
city['beijing'] = '010' # 修改某个键值对
print(city)
del city['shanghai'] # 删除某个键值对
print(city)
# 结果
4
{'suzhou': '0512', 'beijing': '011', 'shanghai': '012', 'xiamen': '0592', 'nanjing': '025'}
{'suzhou': '0512', 'beijing': '010', 'shanghai': '012', 'xiamen': '0592', 'nanjing': '025'}
{'suzhou': '0512', 'beijing': '010', 'xiamen': '0592', 'nanjing': '025'} # shanghai键值对已经删除
小插曲
格式化输出函数有两种情况:format(*args, **kwargs)
- 前者表示字符串形式,*args
- 后者表示字典形式,**kwargs
利用字典在format()
函数中进行格式化输出:
str = "My name is {name} and I am {age}".format(name='Peter', age=27)
print(str) # 通过字符串来格式化输出
dict1 = {'name': 'Peter', 'age': 27}
print('My name is {name} and I am {age}'.format(**dict1)) # 通过字典来格式化输出
# 结果
My name is Peter and I am 27
city = {'suzhou': '0512', 'beijing':'011', 'shanghai':'012', 'xiamen':'0592'}
print("suzhou is a beautiful city, its area code is {suzhou} and the area code of shanghai is {shanghai}".format(**city))
# 结果
suzhou is a beautiful city, its area code is 0512 and the area code of shanghai is 012
网友评论