在python中,字典是存储键值对的数据结构。类似于c++和java中的map一样,也是无序的
m_dict = {'name':'张三', 'id':'100', 'sex':'男', 'address':'北京'}
print(m_dict) # {'name': '张三', 'id': '100', 'sex': '男', 'address': '北京'}
- mdict = {key1 : value1, key2 : value2 }
- 不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值覆盖前一个
- 键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行
创建
# 创建空字典
mdict1 = {}
ndict1 = dict()
print(mdict1) # {}
print(ndict1) # {}
# 创建非空字典
dict1 = {"a":1, "b":2, "c":3}
dict2 = dict(a=1, b=2, c=3)
dict3 = dict((("a",1), ("b",2)))
dict4 = dict([("a",1), ("b",2)])
print(dict1) # {'a': 1, 'b': 2, 'c': 3}
print(dict2) # {'a': 1, 'b': 2, 'c': 3}
print(dict3) # {'a': 1, 'b': 2}
print(dict4) # {'a': 1, 'b': 2}
键值访问
dict1 = {"id":1001, "name":"张三", "age":23, "income":30000}
print(dict1)
print("姓名:", dict1["name"])
print("收入:", dict1["income"])
print("地址:", dict1["add"]) # key不存在就报错 KeyError: 'add'
print("地址:", dict1.get("add")) # key不存在用get取返回None,不抱错
修改(key存在修改,不存在添加)
dict1 = {"id":1001, "name":"张三", "age":23, "income":30000}
dict1["name"] = "李四"
print(dict1) # {'id': 1001, 'name': '李四', 'age': 23, 'income': 30000}
dict1["address"] = "北京"
print(dict1) # {'id': 1001, 'name': '李四', 'age': 23, 'income': 30000, 'address': '北京'}
删除 pop clear del
- pop : 删除指定数据,且返回删除key对应的value,如果字典内有指定的key对应的值,返回设定值,如果没有设定值就会报错
- clear : 删除字典内所有数据
- del : 删除指定数据,或者删除整个字典
dict1.pop("id") # pop删除,key不存在报错
print(dict1)
dict1.clear() # 全部清空
print(dict1)
del dict1["id"]
print(dict1)
遍历
遍历key
dict1 = {"id":1001, "name":"小王王", "age":23, "income":30000}
# 遍历key
print("字典的所有的key:") # 字典的所有的key:
for i in dict1.keys():
print(i, end=" ") # id name age income
遍历value
dict1 = {"id":1001, "name":"小王王", "age":23, "income":30000}
print("字典所有的value:")
for i in dict1.values():
print(i, end=" ") # 1001 小王王 23 30000
遍历键值
dict1 = {"id":1001, "name":"小王王", "age":23, "income":30000}
print("字典所有的key-value:1")
for i,j in dict1.items():
print("{}:{}".format(i, j))
# 字典所有的key-value:1
# id:1001
# name:小王王
# age:23
# income:30000
遍历项
dict1 = {"id":1001, "name":"小王王", "age":23, "income":30000}
print("字典所有的key-value:2")
for i in dict1.items():
print(i)
# ('id', 1001)
# ('name', '小王王')
# ('age', 23)
# ('income', 30000)
按顺序遍历所有的键
m_dict = {"a":"我是a", "b":"我是b", "c":"我是c"}
for i in sorted(m_dict.keys(), reverse=True):
print(i, end=" ") # c b a