python基础—— 字典dict

分手后的思念是犯贱 2024-04-18 23:47 229阅读 0赞

文章目录

  • 一、创建字典
    • 1.1、使用 {} 来创建字典
    • 1.2、使用 dict() 函数来创建字典
    • 1.3、将一个包含有双值子序列的序列转换为字典
  • 二、字典的方法
    • 2.1、len() 获取字典中键值对的个数
    • 2.2、in、not in 检查字典中指定的键
  • 三、字典的读取
    • 3.1、d[key] 根据键来获取值
    • 3.2、get(key[, default]) 该方法用来根据键来获取字典中的值
  • 四、修改字典的值
    • 4.1、d[key] = value
    • 4.2、setdefault(key[, default]) 可以用来向字典中添加key-value
    • 4.3、update([other]) 将其他的字典 添加到当前字典中
  • 五、字典的删除
    • 5.1、del d[key] 来删除字典中的 key-value
    • 5.2、popitem() 删除一个键值对,删除的key-value返回
    • 5.3、pop(key[, default]) 删除字典中的key-value,并将被删除的value返回
  • 六、字典的其他方法
    • 6.1、clear() 用来清空字典
    • 6.2、copy() 对字典进行浅复制
  • 七、遍历字典
    • 7.1、keys() 返回字典的所有的key
    • 7.2、values()
    • 7.3、 items()

一、创建字典

1.1、使用 {} 来创建字典

创建了一个空字典

  1. d = { }

创建一个保护有数据的字典

语法:

  1. {key1:value1,key2:value2,key3:value3}

字典的键可以是任意的不可变对象(int、str、bool、tuple …),但是一般我们都会使用str;

字典的值可以是任意对象;

不同写法:

  1. d = { 'name':'孙悟空' , 'age':18 , 'gender':'男' , 'name':'sunwukong'}
  2. d = {
  3. 'name':'孙悟空' ,
  4. 'age':18 ,
  5. 'gender':'男' ,
  6. 'name':'sunwukong'
  7. }

字典的键是不能重复的,如果出现重复的后边的会替换到前边的;

  1. sunwukong 18

1.2、使用 dict() 函数来创建字典

每一个参数都是一个键值对,参数名就是键,参数名就是值(这种方式创建的字典,key都是字符串)

  1. d = dict(name='孙悟空',age=18,gender='男')
  2. print(d)

运行结果:

  1. {'name': '孙悟空', 'age': 18, 'gender': '男'}

1.3、将一个包含有双值子序列的序列转换为字典

双值序列,序列中只有两个值,[1,2] 、(‘a’,3)、 ‘ab’

子序列,如果序列中的元素也是序列,那么我们就称这个元素为子序列。如:

  1. [(1,2),(3,5)]

创建字典:

  1. d = dict( [('name' ,'孙悟饭'), ('age' ,18)] )
  2. print(d , type(d))

运行结果:

  1. {'name': '孙悟饭', 'age': 18} <class 'dict'>

二、字典的方法

2.1、len() 获取字典中键值对的个数

  1. print(len(d))

2.2、in、not in 检查字典中指定的键

  • in 检查字典中是否包含指定的键
  • not in 检查字典中是否不包含指定的键

    print(‘hello’ in d)

三、字典的读取

3.1、d[key] 根据键来获取值

语法:d[key]

  1. d = { 'name':'孙悟空' , 'age':18 , 'gender':'男' , 'name':'sunwukong'}
  2. print(d['name'] , d['age'] , d['gender'])

运行结果:

  1. 孙悟空 18
  2. print(d['age'])
  3. n = 'name'
  4. print(d[n])

通过[]来获取值时,如果键不存在,会抛出异常 KeyError

如果使用了字典中不存在的键,会报错

  1. print(d['hello']) KeyError: 'hello'

3.2、get(key[, default]) 该方法用来根据键来获取字典中的值

如果获取的键在字典中不存在,会返回None
也可以指定一个默认值,来作为第二个参数,这样获取不到值时将会返回默认值

  1. d = { 'name':'孙悟空' , 'age':18 , 'gender':'男'}
  2. print(d.get('name'))
  3. print(d.get('hello','默认值'))

运行结果:

  1. 孙悟空
  2. 默认值

优点:

get(key)d[key] 的优点是 当key 不存在时,不会报错。

四、修改字典的值

4.1、d[key] = value

如果key存在则覆盖,不存在则添加

  1. d['name'] = 'sunwukong' # 修改字典的key-value
  2. d['address'] = '花果山' # 向字典中添加key-value
  3. print(d)

4.2、setdefault(key[, default]) 可以用来向字典中添加key-value

如果key已经存在于字典中,则返回 value值,不会对字典做任何操作;
如果key不存在,则向字典中添默认的 key-value,并返回value

  1. d = { 'name':'孙悟空' , 'age':18 , 'gender':'男'}
  2. result = d.setdefault('name','猪八戒')
  3. print('result =',result)
  4. result = d.setdefault('hello','猪八戒')
  5. print('result =',result)
  6. print(d)

结果:

  1. result = 孙悟空
  2. result = 猪八戒
  3. { 'name': '孙悟空', 'age': 18, 'gender': '男', 'hello': '猪八戒'}

4.3、update([other]) 将其他的字典 添加到当前字典中

将其他的字典中的 key-value 添加到当前字典中
如果有重复的key,则后边的会替换到当前的值

  1. d = { 'a':1,'b':2,'c':3}
  2. d2 = { 'd':4,'e':5,'f':6, 'a':7}
  3. d.update(d2)
  4. print(d)

五、字典的删除

5.1、del d[key] 来删除字典中的 key-value

  1. d = { 'name':'孙悟空' , 'age':18 , 'gender':'男'}
  2. del d['name']
  3. print(d)

运行结果:

  1. { 'age': 18, 'gender': '男'}

如果 key不存在,报错:

  1. d = { 'name':'孙悟空' , 'age':18 , 'gender':'男'}
  2. del d['b']

运行结果:

  1. KeyError: 'b'

5.2、popitem() 删除一个键值对,删除的key-value返回

随机删除字典中的一个键值对,一般都会删除最后一个键值对;

删除之后,它会将删除的key-value作为返回值返回;

返回的是一个元组,元组中有两个元素,第一个元素是删除的key,第二个是删除的value

  1. d = { 'name':'孙悟空' , 'age':18 , 'gender':'男'}
  2. result = d.popitem()
  3. print(d)
  4. print(result)

运行结果:

  1. { 'name': '孙悟空', 'age': 18}
  2. ('gender', '男')

当使用popitem()删除一个空字典时,会抛出异常:

  1. d = { 'name':'孙悟空' , 'age':18 , 'gender':'男'}
  2. result = d.popitem()
  3. result = d.popitem()
  4. result = d.popitem()
  5. result = d.popitem()

运行结果:

  1. KeyError: 'popitem(): dictionary is empty'

5.3、pop(key[, default]) 删除字典中的key-value,并将被删除的value返回

根据key删除字典中的key-value,并将被删除的value返回!
如果删除不存在的key,会抛出异常

如果指定了默认值,再删除不存在的key时,不会报错,而是直接返回默认值

1)示例1

  1. d = { 'name':'孙悟空' , 'age':18 , 'gender':'男'}
  2. result = d.pop('z')
  3. print(result)

运行出错:

  1. KeyError: 'z'

2)使用 del 删除
如果 key 不存在时,也报一样的错误。

  1. del d['z'] # z不存在,报错,

3)pop(key[, default]) 设置默认值

  1. d = { 'name':'孙悟空' , 'age':18 , 'gender':'男'}
  2. result = d.pop('name')
  3. print(result)
  4. result = d.pop('z','这是默认值')
  5. print(result)
  6. print(d)

运行结果

  1. 孙悟空
  2. 这是默认值 # pop() 因为设置了默认值,所以没有报错。
  3. {'age': 18, 'gender': '男'}

六、字典的其他方法

6.1、clear() 用来清空字典

  1. d.clear()

6.2、copy() 对字典进行浅复制

该方法用于对字典进行浅复制

复制以后的对象,和原对象是独立,修改一个不会影响另一个

注意,浅复制会简单复制对象内部的值,如果值也是一个可变对象,这个可变对象不会被复制

示例1

  1. d = { 'a':1,'b':2,'c':3}
  2. d2 = d.copy()
  3. print('d = ',d , id(d))
  4. print('d2 = ',d2 , id(d2))

运行结果:

  1. d = { 'a': 1, 'b': 2, 'c': 3} 2084990052896
  2. d2 = { 'a': 1, 'b': 2, 'c': 3} 2084990052968

id的值不相同,复制以后的对象,和原对象是独立,修改一个不会影响另一个

示例2

  1. d = { 'a':{ 'name':'孙悟空','age':18},'b':2,'c':3}
  2. d2 = d.copy()
  3. d2['a']['name'] = '猪八戒'
  4. print('d = ',d , id(d))
  5. print('d2 = ',d2 , id(d2))

运行结果:

  1. d = { 'a': { 'name': '猪八戒', 'age': 18}, 'b': 2, 'c': 3} 2709291297384
  2. d2 = { 'a': { 'name': '猪八戒', 'age': 18}, 'b': 2, 'c': 3} 2709291297744

说明:
浅复制会简单复制对象内部的值,

如果值也是一个可变对象,这个可变对象不会被复制,是引用的。所以对象的值被修改后,则引用的对象也会被改变。

七、遍历字典

7.1、keys() 返回字典的所有的key

该方法会返回一个序列,序列中保存有字典的所有的键

  1. d = { 'name':'孙悟空','age':18,'gender':'男'}
  2. print(d.keys())

运行结果:

  1. dict_keys(['name', 'age', 'gender'])

通过遍历keys()来获取所有的键

  1. for k in d.keys() :
  2. print(k , d[k])

运行结果:

  1. name 孙悟空
  2. age 18
  3. gender

7.2、values()

该方法会返回一个序列,序列中保存有字典的左右的值

  1. for v in d.values():
  2. print(v)

运行结果:

  1. 孙悟空
  2. 18

7.3、 items()

该方法会返回字典中所有的项
它会返回一个序列(元组),序列中包含有双值子序列
双值分别是,字典中的key和value

  1. print(d.items())
  2. for k,v in d.items() :
  3. print(k , '=' , v)

运行结果:

  1. dict_items([('name', '孙悟空'), ('age', 18), ('gender', '男')])
  2. name = 孙悟空
  3. age = 18
  4. gender =

发表评论

表情:
评论列表 (有 0 条评论,229人围观)

还没有评论,来说两句吧...

相关阅读

    相关 pythondict字典

    字典是一系列由键(key)和值(value)配对组成的元素的集合,在 Python3.7+,字典被确定为有序(注意:在 3.6 中,字典有序是一个implementation