Python字典(Dictionary)

版权声明:编写不易,转载请注明出处 https://blog.csdn.net/zha6476003/article/details/82800326

Python中字典与类表类似,也是可变序列,不过与列表不同,他是无序的可变序列,保存的内容是以键 - 值对的形式存放的。类似我们的新华字典,他可以把拼音和汉字关联起来,通过音节表可以快速的找到想要的字。新华字典中的音节相当于(key),而对应的汉字,相当于值(value)。键是唯一的,而值可以有多个。

示例代码:

dictionary = {"key1": "value1", "key2": "value2".....}

分析:

  • key:表示元素的键,必须是唯一的并且不可变,可以是字符串、数字或元组等
  • value:表示值,可以是任何类型数据,不是唯一的。

字典的创建和删除

示例代码:

dicts = {"name": "张三", "sex": "男", "age": 18}
print(dicts)

执行结果:
	{"name": "张三", "sex": "男", "age": 18}

创建空字典:

dictionary = {}
或
dictionary = dict()

将列表合并为字典

dictionary = dict(zip(list1,list2))

dictionary:字典的名称
zip()函数:用于将多个列表或元组对应的位置的元素组合为元组,并返回白喊这些内容的zip对象,如果想获取元组,可以将zip对象使用tuple()函数转换为这个元组;如果想获取列表,则可以使用list()函数将其转换为列表。

示例代码:

name = ["小王", "小明", "小张"]
class1 =["一班", "二班", "三班"]
dictionary = dict(zip(name,class1))
print(dictionary)

执行结果:
	{'小王': '一班', '小明': '二班', '小张': '三班'}

通过给定的"键-值队:创建字典

示例代码:

dictionary = dict(张三="水平座", 李四="射手座")
print(dictionary)

执行结果:
	{'张三': '水平座', '李四': '射手座'}

创建值为空的字典

示例代码:

name = ["张三", "李四"]
dictionary = dict.fromkeys(name)
print(dictionary)

执行结果:
	{'张三': None, '李四': None}

通过元组和列表创建字典

示例代码:

name = ("张三", "李四")
age = [18, 20]
dictionary = {name:age}
print(dictionary)

执行结果:
	{('张三', '李四'): [18, 20]}

注意两个对象都为列表会报错:

name = ["张三", "李四"]
age = [18, 20]
dictionary = {name:age}
print(dictionary)

执行结果:
Traceback (most recent call last):
  File "D:/xuexi/python/Demo.py", line 3, in <module>
    dictionary = {name:age}
TypeError: unhashable type: 'list'

删除字典

同列表与元组一样使用del删除字典
示例代码:

name = {"张三": 18, "李四": 20}
print(name)
del name
print(name)

执行结果:
	Traceback (most recent call last):
	{'张三': 18, '李四': 20}
	  File "D:/xuexi/python/Demo.py", line 4, in <module>
	    print(name)
	NameError: name 'name' is not defined

访问字典

直接指定key访问

示例代码:

name = {"张三": 18, "李四": 20}
print(name["李四"])

执行结果:
	20

使用get()方法访问

示例代码:

name = {"张三": 18, "李四": 20}
print(name.get("李四"))

执行结果:
	20

key不存在出现报错解决办法

如果key不存在会出现KeyError: 'value'报错,下面提供两个解决方式:

*使用3元运算符判断key是否存在

使用dictionary[value] if value in dictionary else "自定义不存在返回值",如果value在字典中则返回value如果不存在返回自定义值。

示例代码:

name = {"张三": 18, "李四": 20}


def dicts(value, dictionary=name): # dictionary默认为name可不传参
    """需要一个判断的 值 和一个被判断的字典,判断一字典是否有需要的值,如果有将返回该值,不存在返回'字典没有此人'"""
    return dictionary[value] if value in dictionary else "字典没有此人"


print(dicts("张三"))
print("----------")
print(dicts("王五", name))

执行结果:
	18
	----------
	字典没有此人

使用上面用到的get()方法解决

dictionary.get(key,default)

dictionary:字典名称
key:需要查找的key
default:如果当指定的key不存在返回的值(默认返回None)

示例代码:

name = {"张三": 18, "李四": 20}
print(name.get("张三"))
print("----------")
print(name.get("李", "key不存在"))

执行结果:
	18
	----------
	key不存在

实践代码

dictionary1 = {"张三": "男", "小红": "女"}
dictionary2 = {"男": "帅", "女": "美"}
print("小红的性别是:", dictionary1.get("小红"))
print("她的特点是:", dictionary2.get(dictionary1.get("小红")))

执行结果
	小红的性别是: 女
	她的特点是: 美

遍历字典

使用items()加for循环

示例代码1:

dictionary1 = {"张三": "男", "小红": "女"}
for i in dictionary1.items():
    print(i)

执行结果:
	('张三', '男')
	('小红', '女')

示例代码2:

dictionary1 = {"张三": "男", "小红": "女"}
for i, j in dictionary1.items():
    print(i, "的性别是:", j)

执行结果:
	张三 的性别是: 男
	小红 的性别是: 女

添加、修改删除字典元素

添加元素

示例代码:

dictionary1 = {"张三": "男", "小红": "女"}

dictionary1["王二"] = "男"
print(dictionary1)

执行结果:
	{'张三': '男', '小红': '女', '王二': '男'}

注意:当指定的key已存在字典中,将会替换key而不是添加一个key

删除字典

示例代码:

dictionary1 = {"张三": "男", "小红": "女"}

del dictionary1["张三"] #删除一个元素
print(dictionary1)

执行结果:
	{'小红': '女'}

字典推导式

示例代码1:

import random

randomdict = {i:random.randint(10, 100) for i in range(1, 5)} # 创建一个4个key的字典,value取值范围10到100随机4个
print(randomdict)

执行结果:
	{1: 30, 2: 60, 3: 19, 4: 65}

示例代码2:

list1 = ["小张", "小红"]
list2 = ["男", "女"]
dictionary = {i: j + "生" for i, j in zip(list1, list2)}
print(dictionary)

执行结果:
	{'小张': '男生', '小红': '女生'}

猜你喜欢

转载自blog.csdn.net/zha6476003/article/details/82800326