Python-字典(dict)

什么是字典?

字典是另一种可变容器模型,且可存储任意类型对象。
典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中
格式如下:
d = {key1 : value1, key2 : value2 }

键必须是唯一的,但值则不必。
值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。

注意:
(1). 同一个键不能出现两次,如果一个键被赋值两次,后边的键值会被记下,而前边的键值会被覆盖
(2). 键必须不可变,所以可以用数字,字符串或元组充当,列表不可以

 

 

创建字典的几种方式:

 

# 方式1. 创建一个空字典
dic = {}

# 方式2. 通过赋值创建
dic = {"one":"小明","two":"小李","three":"小马"}
print(dic)      # {'one': '小明', 'two': '小李', 'three': '小马'}

# 方式3  通过dict()函数和关键字参数创建
dic = dict(one="小明",two="小李",three="小马")
print(dic)      # {'one': '小明', 'two': '小李', 'three': '小马'}

# 方式4   通过二元列表创建
dic = [("one","小明"),("two","小李"),("three","小马")]
print(dic)        # [('one', '小明'), ('two', '小李'), ('three', '小马')]

# 方式5   dict和zip结合创建
dic = dict(zip(["one","two","three"],["小明","小李","小马"]))
print(dic)      # {'one': '小明', 'two': '小李', 'three': '小马'}

# 方式6 :     字典推导式
dic = {str(i) : i*2 for i in range(9)}
print(dic)      # {'0': 0, '1': 2, '2': 4, '3': 6, '4': 8, '5': 10, '6': 12, '7': 14, '8': 16}

# 方式7       通过dict.fromkeys()创建
dic = dict.fromkeys("abcd","小明")
print(dic)      # {'a': '小明', 'b': '小明', 'c': '小明', 'd': '小明'}

# 方式8       通过切片拿值创建
list = ["one","小明","two","小李","three","小马"]
dic = dict(zip(list[::2],list[1::2]))
print(dic)      # {'one': '小明', 'two': '小李', 'three': '小马'}

 

 

 

字典的常用方法

增:

# 1). 直接增加
dict = {"name":"小明","age":18}
dict["height"] = 180    # 如若字典内没有'height'这个键,则自动增加键值对
print(dict)         # {'name': '小明', 'age': 18, 'height': 180}

# 2). 通过'setdefault()'增加 dict = {"name":"小明","age":18} dict.setdefault("height",180) # 如果没有该键,则自动增加键值对 print(dict) # {'name': '小明', 'age': 18, 'height': 180} dict.setdefault("name","小马") # 如果有该键,则不变 print(dict) # {'name': '小明', 'age': 18, 'height': 180} # 返回返回值: re = dict.setdefault("name") # 有该键并且有值的情况下,返回值 print(re) # 小明

 

 

删:

 

# 1). pop()通过key删除字典的键值对,有返回值,可设置返回值
dict = {"name":"小明","age":18}
re = dict.pop("name")
print(re)       # 小明
re1 = dict.pop("name","小马")     # 设置返回值
print(re1)      # 小马

# 2). popitem(): 删除最后一个键值对,有返回值 dict = {"name":"小明","age":18} print(dict) # {'name': '小明', 'age': 18} re = dict.popitem() print(re) # ('age', 18)
# 3). clear(): 清空字典 dict = {"name":"小明","age":18} print(dict) # {'name': '小明', 'age': 18} dict.clear() print(dict) # {} # 删除整个字典(返回变量类型): del dict print(dict) # <class 'dict'>

 

 

改:

# 1). 通过键值对直接更改
dict = {"name":"小明","age":18}
print(dict)     # {'name': '小明', 'age': 18}
dict["name"] = "小马"
print(dict)     # {'name': '小马', 'age': 18}


# 2). update(): 可通过键对值进行更改,如若没有该键,则总动添加
dict = {"name":"小明","age":18}
print(dict)     # {'name': '小明', 'age': 18}
dict.update(name="小马",age=18)
print(dict)     # {'name': '小马', 'age': 18}

dict.update([("height",18),("weight",120)])
print(dict)     # {'name': '小马', 'age': 18, 'height': 18, 'weight': 120}

dict1 = {"name": "小明", "age": 18, "height": 18, "weight": 120}
dict2 = {"name":"小马","age":17,"hobby":"play a game"}
print(dict1)    # {'name': '小明', 'age': 18, 'height': 18, 'weight': 120}
print(dict2)    # {'name': '小马', 'age': 17, 'hobby': 'play a game'}
dict1.update(dict2)     # 使用'dict2'对'dict1'进行更改
print(dict1)    # {'name': '小马', 'age': 17, 'height': 18, 'weight': 120, 'hobby': 'play a game'}

 

 

查:

# 1). 通过键查询(如若没有该键,则直接报错)
dict = {"name": "小马", "age": 17, "height": 18, "weight": 120, "hobby": "play a game"}
print(dict["name"])     # 小马

# 2). get() : 通过键查询值,有返回值。如果没有该键,则返回None
dict = {"name": "小马", "age": 17, "height": 18, "weight": 120, "hobby": "play a game"}
re = dict.get("name")
print(re)       # 小马
re1 = dict.get("name1")
print(re1)      # None

# 3). keys() : 返回字典内所有的键
dict = {"name": "小马", "age": 17, "height": 18, "weight": 120, "hobby": "play a game"}
print(dict.keys())  # dict_keys(['name', 'age', 'height', 'weight', 'hobby'])

# 4). values() : 返回字典内所有的值
dict = {"name": "小马", "age": 17, "height": 18, "weight": 120, "hobby": "play a game"}
print(dict.values())    # dict_values(['小马', 17, 18, 120, 'play a game'])

# 5). items() : 返回字典内所有的键值对
dict = {"name": "小马", "age": 17, "height": 18, "weight": 120, "hobby": "play a game"}
print(dict.items())     # dict_items([('name', '小马'), ('age', 17), ('height', 18), ('weight', 120), ('hobby', 'play a game')])

 

posted @ 2020-07-12 19:55  马ある某  阅读(135)  评论(0编辑  收藏  举报