字典

字典

一、字典的定义和创建

(一)字典的定义

Pyhton中的字典指的是一种可变的容器类型,而且它可以装任意类型的对象。所谓容器类型,就是可以存储数据的地方。Python中的字典是用大括号{}括起来的,并且每一个元素由键和值两部分组成,并且键和值之间必须使用英文冒号(:)隔开,由于它们之间必须一一对应出现,所以又称作键值对,每组键值对之间必须用英文逗号(,)隔开。

键是字典进行读取值和赋值的重要标记,所以要求有唯一性,并且是不可变序列,因此列表不可充当字典的键。

值可以是其他任意数据类型,不要求具有唯一性。

字典并不是序列,所以没有顺序,因而也就没有索引。

(二)字典的创建

字典直接使用 {} 来建立,格式符合字典的要求即可。

d1 = {1:'a', 2:'b', 3:'c'}
d2 = {'ls1':[1,2,3], 'ls2':[4,5,6]}
d3 = {'dict1':d1, 'dict2':d2}
print(d1)
print(d2)
print(d3)

字典的键具有唯一性,如果创建时同一键被赋值两次,则后一个值会取代前一个值成为键的值。

d = {'牛奶':18, '香蕉':6, '饼干':10, '牛奶':20}
print(d)

二、字典的增、删、改、查

(一)字典的访问

由于字典没有索引,所以我们不能用索引的方法来访问字典。要访问字典里的值,有两种常用的方法。

  1. 使用 字典名[键名] 的方式,此方法类似序列中的索引访问

    d = {'A':'a', 'B':'b', 'C':'c'}
    print(d['A'])
    
  2. 使用get()函数,格式为 字典名.get(键名)

    d = {'A':'a', 'B':'b', 'C':'c'}
    print(d.get('A'))
    

上述两种方法最大的区别是get()函数可以自定义没有该键时的返回值,如果没有自定义,则返回None;而把键当作 “索引” 来访问字典时,如果没有该键,则会报错。

d = {'A':'a', 'B':'b', 'C':'c'}
print(d.get('D', '找不到此元素'))
print(d['D'])

(二)修改已有的键的值

直接使用 字典名加键 的方式进行赋值即可

d = {'A':'a', 'B':'b', 'C':'c'}
d['C'] = 3
print(d)

(三)给字典增添新的键值对

同样也可以采用 字典加键 的方式直接赋值即可,也就是说:采用该方法赋值,如果字典中已有键,则将该键的值修改为最新的值;如果字典中没有该键,则新增该键值对到字典中。

d = {'A':'a', 'B':'b', 'C':'c'}
d['D'] = 'd'
print(d)

(四)删除字典里已有的值

使用del可以删除一个键值对,如果不给到具体的键,则删除整个变量

d = {'A':'a', 'B':'b', 'C':'c'}
del d['C']
print(d)
del d
print(d)

(五)清空字典里的值

clear()可以清空字典里的所有值,使字典成为一个空字典

d = {'A':'a', 'B':'b', 'C':'c'}
d.clear()
print(d)

三、字典的其他操作

(一)len()和in

  1. len():返回字典里的元素(键值对)的数量

    d = {'A':'a', 'B':'b', 'C':'c'}
    print(len(d))
    
  2. in:检查键是否在字典中(注意,in只检查键,不检查值)

    d = {'A':'a', 'B':'b', 'C':'c'}
    print('A' in d)
    print('a' in d)
    

(二)copy()

使用copy()方法可返回一个具有相同键值对的新字典。字典和列表一样,如果只是赋值的话则只是应用之前的内容,但如果做了修改就会改变原先的字典内容。copy方法类似于列表的 "[:]"(截取),相当于完整地复制了一份新的脚本。

d1 = {'A':'a', 'B':'b', 'C':'c'}
d2 = d1
d3 = d1.copy()
print('——————修改前————————')
print(d1)
print(d2)
print(d3)

d1['D'] = 'd'
print('——————修改后————————')
print(d1)
print(d2)
print(d3)

(三)fromkeys()

fromkeys()用于创建一个新字典,用序列中的元素作为字典的键,第二个参数为字典所有参数对应的初始值。

d = {}
seq = ["name", "age", "class"]

student1 = d.fromkeys(seq)	# 不指定默认值
print(student1)

student2 = d.fromkeys(seq, 15)	# 指定默认值为15
print(student2)

(四)keys()、values()、items()

  1. keys():使用keys方法返回一个列表,里面包含了字典的所有键

    d = {'A':'a', 'B':'b', 'C':'c'}
    print(d.keys())
    
  2. values():使用values方法返回一个列表,里面包含了字典的所有值

    d = {'A':'a', 'B':'b', 'C':'c'}
    print(d.values())
    
  3. items():使用items方法返回一个列表,里面包含了所有键的列表和所有值的列表(准确地说items返回的并不是一个列表类型,只是类似列表,这里不展开说明)

    d = {'A':'a', 'B':'b', 'C':'c'}
    print(d.items())
    

    由于字典不能直接用于for循环中,所以我们可以使用items()方法来遍历字典:

    d = {'A':'a', 'B':'b', 'C':'c'}
    
    for k,v in d.items():
        print(k, "=>", v)
    

posted @ 2023-10-16 11:59  离渊灬  阅读(54)  评论(0)    收藏  举报