Python学习笔记(7)字典

时间:2021-09-25 00:31:39

2019-03-07

字典(dict):

(1)字典用大括号({})定义,字典由多个键及其对应的值组合而成,每一对键值组合称为项。

(2)字典的键唯一,但是值可以是任何(不可变的)数据类型(整型,字符串,元组等)

(3)字典是Python中唯一的映射类型,字典不是序列,在字典中为一个不存在的位置赋值的时候,会自动创建相应的键并添加对应的值进去。

(4)创建字典:

  ① 空字典:用一个大括号即可。

  测试代码:

empty = {}

print(empty)
print(type(empty))

  运行结果:

{}
<class 'dict'>

  ② dict()函数创建字典。该函数的参数可以是一个序列(不能是多个),要打包成一个元组(列表)序列。

  测试代码:

dict2 = dict((('name','李白'),('age',70),('salary',2000)))

print(dict2)

  运行结果:

{'name': '李白', 'age': 70, 'salary': 2000}

  ③ 提供dict()函数具有映射关系的参数来创建字典。注意:键的位置上不能加上字符串的引号,否则会报错。

  测试代码:

dict3 = dict(name = '李白',age = 70, salary = 2000)
print(dict3)

  运行结果:

{'name': '李白', 'age': 70, 'salary': 2000}

  ④ 直接给已有字典的键赋值,如果键存在,则改写键对应的值,如果不存在,则创建一个新的键并赋值。

  测试代码:

pets = {1:"name",2:"age",3:"agender"}
pets[3] = "salary"
pets[4] = 20000
print(pets)

  运行结果:

{1: 'name', 2: 'age', 3: 'salary', 4: 20000}

(5)内置方法:

  ① fromkeys():创建并返回一个新的字典,有两个参数,第一个参数是字典的键,第二个参数是可选的,是传入键对应的值(如果没有值,默认值是none)。

  测试代码:

dict4 = {}
test = dict4.fromkeys((1,2,3),"name")
test2 = dict4.fromkeys((1,2,3))
print(test)
print(test2)

  运行结果:

{1: 'name', 2: 'name', 3: 'name'}
{1: None, 2: None, 3: None}

  ② keys():返回字典中的键。values():返回字典中所有的值。Items():返回字典中所有的键值对。

  测试代码:

pets = {1:"name",2:"age",3:"agender"}
print(pets.keys())
print(pets.values())
print(pets.items())

  运行结果:

dict_keys([1, 2, 3])
dict_values(['name', 'age', 'agender'])
dict_items([(1, 'name'), (2, 'age'), (3, 'agender')])

  ③ get():访问字典,当键不存在的时候,不会报错,会返回一个none

  测试代码:

pets = {1:"name",2:"age",3:"agender"}

test = pets.get(2)
test2 = pets.get(4)
print(test)
print(test2)

  运行结果:

age
None

  ④ 成员资格操作符In not in可以判断一个键是否存在字典中。

  测试代码:

pets = {1:"name",2:"age",3:"agender"}

print(1 in pets)
print(1 not in pets)
print(5 in pets)

  运行结果:

True
False
False

  ⑤ clear():清空一个字典。

  测试代码:

pets = {1:"name",2:"age",3:"agender"}

print(pets)
pets.clear()
print(pets)

  运行结果:

{1: 'name', 2: 'age', 3: 'agender'}
{}

  ⑥ pop():给定键弹出对应的值。 popitem():随机弹出一个键值对。

  测试代码:

pets = {1:"name",2:"age",3:"agender"}

test = pets.pop(1)
print(1,test)
print(2,pets)

test2 = pets.popitem()
print(3,test2)
print(4,pets)

  运行结果:

1 name
2 {2: 'age', 3: 'agender'}
3 (3, 'agender')
4 {2: 'age'}

  ⑦ setdefault():访问字典,在字典中找不到相应的键时会自动添加。

  测试代码:

pets = {1:"name",2:"age",3:"agender"}
a = pets.setdefault(2)
b = pets.setdefault(5)
print(a)
print(b)

   运行结果:

age
None

  ⑧ update():更新字典。

  测试代码:

pets = {1:"name",2:"age",3:"agender"}
pets.update({1:"sda "})
pets.update(sun= "10000 ")
print(pets)

  运行结果:

{1: 'sda ', 2: 'age', 3: 'agender', 'sun': '10000 '}