1、字典(dict)
字典是无序,可变和索引的集合。 在Python中,字典用大括号括起来,并且具有键和值。
例如:
# 使用花括号创建字典 person = { "name": "Levi", "age": 30, "city": "ShangHai" } # 使用 dict() 构造函数创建字典 person = dict(name="Levi", age=30, city="ShangHai") print(person)
2、访问字典元素
可以通过在方括号内引用其键名来访问字典的各项:
例如:
# 使用花括号创建字典 person = { "name": "Levi", "age": 30, "city": "ShangHai" } # 使用 dict() 构造函数创建字典 person = dict(name="Levi", age=30, city="ShangHai") print(person) # 通过键访问值 print(person["name"]) # 输出: Levi # 使用 get() 方法访问值 print(person.get("age")) # 输出: 30 # 使用 get() 方法设置默认值 print(person.get("country", "China")) # 输出: China
3、添加或更新元素
可以通过参考特定项的key来更改其值。
例如:
# 使用花括号创建字典 person = { "name": "Levi", "age": 30, "city": "ShangHai" } # 使用 dict() 构造函数创建字典 person = dict(name="Levi", age=30, city="ShangHai") print(person) # 添加新键值对 person["email"] = "levi@example.com" # 更新现有键的值 person["age"] = 31 print(person)
4、遍历字典
可以使用for
循环一个字典。
当遍历字典时,返回值是字典的键,但是也有一些方法可以返回值。
例如:
# 使用花括号创建字典 person = { "name": "Levi", "age": 30, "city": "ShangHai" } # 获取字典中的所有键 keys = person.keys() print(keys) # 获取字典中的所有值 values = person.values() # 获取字典中的所有键值对 items = person.items() # 清空字典 person.clear() # 复制字典 person_copy = person.copy() # 从键值对序列创建字典 person = dict([("name", "Alice"), ("age", 30), ("city", "New York")]) print(person)
字典的其他常用方法:
# 使用花括号创建字典 person = { "name": "Levi", "age": 30, "city": "ShangHai" } # 获取字典中的所有键 keys = person.keys() print(keys) # 获取字典中的所有值 values = person.values() # 获取字典中的所有键值对 items = person.items() # 清空字典 person.clear() # 复制字典 person_copy = person.copy() # 从键值对序列创建字典 person = dict([("name", "Alice"), ("age", 30), ("city", "New York")]) print(person)
5、判断key是否存在
要确定字典中是否存在指定的键,请使用in
关键字:
例如:
判断字典中是否存在"name":
dict1 = { "name": "cjavapy", "age": 3, "gender": "man" } if "name" in dict1: print("'name'存在字典中")
6、字典的长度(len())
要确定字典中有多少项(键值对),使用len()
函数。
例如:
打印输出字典中的项目数:
# 使用花括号创建字典 person = { "name": "Levi", "age": 30, "city": "ShangHai" } print(len(person))
7、删除字典中项目元素
有几种方法可以从字典中删除项目:
例如:
pop()
方法移除具有指定key的项:
dict1 = { "name": "cjavapy", "age": 3, "gender": "man" } thisdict.pop("age") print(dict1)
例如:
popitem()
方法删除最后插入的项(在3.7之前的版本中,将删除随机项):
dict1 = { "name": "cjavapy", "age": 3, "gender": "man" } dict1.popitem() print(dict1)
例如:
del
关键字删除具有指定键名的项目:
dict1 = { "name": "cjavapy", "age": 3, "gender":"man" } del dict1["age"]
print(dict1)
例如:
del
关键字也可以完全删除字典:
dict1 = { "name": "cjavapy", "age": 3, "gender": "man" } del dict1 print(dict1) #这将导致一个错误,因为“thisdict”不再存在。
例如:
clear()
方法清空字典:
dict1 = { "name": "cjavapy", "age": 3, "gender": "man" } thisdict.clear() print(dict1)
9、复制一个字典
不能简单地通过输入dict2 = dict1
来复制字典,因为dict2
将仅是对dict1
的引用,对dict1所做的更改也将自动被改为indict2
。
有很多方法可以制作副本,一种方法是使用内置的Dictionary方法copy()
。
例如:
使用copy()
方法制作字典的副本:
dict1 = { "name": "cjavapy", "age": 3, "gender": "man" } mydict = dict1.copy()
print(mydict)
制作副本的另一种方法是使用内置函数dict()
。
例如:
使用dict()
函数复制字典:
thisdict = { "name": "cjavapy", "age": 3, "gender": "man" } mydict = dict(thisdict) print(mydict)
10、嵌套的字典
字典还可以包含许多字典,这称为嵌套字典。
例如:
创建一个包含三个词典的字典:
myfamily = { "child1" : { "name" : "Emil", "year" : 2004 }, "child2" : { "name" : "Tobias", "year" : 2007 }, "child3" : { "name" : "Linus", "year" : 2011 } }
或者,如果想嵌套三个已经作为字典存在的字典:
例如:
创建三个字典,然后创建一个包含其他三个字典的字典:
child1 = { "name" : "Emil", "year" : 2004 } child2 = { "name" : "Tobias", "year" : 2007 } child3 = { "name" : "Linus", "year" : 2011 } myfamily = { "child1" : child1, "child2" : child2, "child3" : child3 }
11、dict() 构造函数
也可以使用dict()
构造函数创建一个新字典:
例如:
dict1 = dict(brand="Ford", model="Mustang", year=1964) # 注意,关键字不是字符串 # 注意,赋值时使用的是等号而不是冒号 print(dict1)
12、字典方法
Python具有一组可用于词典的内置方法。
方法 | 描述 |
clear() | 从字典中删除所有元素 |
copy() | 返回字典的副本 |
fromkeys() | 返回具有指定键和值的字典 |
get() | 返回指定键的值 |
items() | 返回一个列表,其中包含每个键值对的元组 |
keys() | 返回包含字典键的列表 |
pop() | 删除具有指定键的元素 |
popitem() | 删除最后插入的键值对 |
setdefault() | 返回指定键的值。 如果密钥不存在:插入具有指定值的密钥 |
update() | 使用指定的键值对更新字典 |
values() | 返回字典中所有值的列表 |