Python笔记--9 变量那些事(6)dictionary

字典
基本知识
  • Python中的字典和你小时候查的字典虽然内容上和形式上有所差别,但是在本质上有相似之处;回想一下,当时自己查字典的时候时如何查的,大概有两种方法吧,通过拼音索引或者通过部首索引;使用这些查找到后的内容就是自己想要的内容。
  • 类比我们可知:Python中的字典是一种映射类型,是一个无序的集合(不能通过下标进行索引);一个字典使用 { } 来包含内部元素;内部的元素为键值对,每一个元素都需要一个键(key)和一个值(value)。
  • 举例:
a = {"a":1, "b":2, "c":3 }
其中元素使用逗号隔开;"a""b""c"分别为三个元素的键(key),123分别为三个元素的值
要访问字典中的值需要通过键来访问
  • 注意:
    • 在同一个字典中,key必须是唯一的,但是value可以有重复的
      • 例如:a = {“a”:1, “b”:1, “c”:1 }
      • 原因:
        • 当值有重复时,这是毫无问题的,不会影响任何一个元素的访问,而且访问任何一个元素都是明确的,这就比如用一个字典来存储名字(key)和成绩(value),不同人的成绩可能相同,但是名字不会相同(一般情况下)
        • 当键有重复时,你使用这个重复的键去访问值,此时就会引起冲突,因为不知道是返回那个值。
    • 作为键的数据类型的要求:不可变类型,例如 list是可变的,不能作为键
    • 值是可以修改的

函数
1)创建字典
	空字典:a = {}或者a = dict()
	普通字典:a = {"a":1, "b":2, "c":3 }或者a = dict([("a",1),("b",2),("c",3)])传入一个列表,列表中的每一个元素为一个二元组,将每一个二元组的第一个值作为键,第二个作为值。
--------------------------------------------------------------------------------------------
2)通过键访问、修改、删除对应的值或者整个元素
举例:
a = {"a":1, "b":2, "c":3 }
print(a["a"]) #访问键为"a"的元素
# 1
a["b"] = 2.0 #修改键为"b"的元素
print(a["b"])
# 2.0
del a["c"] #删除键为"c"的元素(包括键和值)
print(a)
# {'a': 1, 'b': 2.0}
del a # 删除整个字典
print(a)
# NameError: name 'a' is not defined 由于整个字典被删除了,所以这个变量就不存在了,就成了未定义的变量
-----------------------------------------------------------------------------------------------
3) dict.fromkeys(seq, [,value])
功能:创建一个新字典。seq 为一个序列(可以为一个元组、列表等),在调用dict.fromkeys()时,会将seq的元素分别作为字典不同元素的key, value是可选的(默认为None),作为每个元素的值(这个值是所有元素共用的)
举例:
seq = ("a", "b", "c")
a = dict.fromkeys(seq)
print(a)
b = dict.fromkeys(seq, 1)
print(b)
c = dict.fromkeys(seq,[1,2,3])
print(c)
# {'a': None, 'b': None, 'c': None}
# {'a': 1, 'b': 1, 'c': 1}
# {'a': [1, 2, 3], 'b': [1, 2, 3], 'c': [1, 2, 3]} value是共用的,所以每个key对应的值都是一个列表

注意:
	dict是Python内置的关键字,所以我们可以直接使用dict调用这个方法,但是我们也可以通过任何一个字典实例来调用这个方法,所以这就会引出一个问题,这个创建的新字典保存到哪里了呢?
	很明显,不会保存到调用它的字典里,因为,不使用字典实例也可以调用;实际上,这个方法只是把新字典作为返回值返回,所以要使用新的变量来接收这个新字典。
a = {}
seq = ("a", "b", "c")
b = a.fromkeys(seq)
print("a : %s \n b: %s"%(str(a), str(b)))
# a : {} 
# b: {'a': None, 'b': None, 'c': None}
-----------------------------------------------------------------------------------------------
4) dict.get(key, [,default=None])
功能: 使用key获取字典中对应的值,若不存在则返回默认值None,也可以自己指定不存在时的返回值
举例:
a = {'a': 1, 'b': 2, 'c': 3}
b = a.get("a")
print(b)
c = a.get("d")
print(c)
d = a.get("d", "haha")
print(d)
# 1
# None
# haha 指定不存在时的返回值"haha"
-----------------------------------------------------------------------------------------------
5) dict.setdefault(key, default=None)
功能:获取字典中的key对应的值,如果key不存在,则添加上,并设置对应的值为None(默认,可自己指定)
举例:
a = {'a': 1, 'b': 2, 'c': 3}
b = a.setdefault("a", 2)
print(a,"\n",b)
c = a.setdefault("d")
print(a,"\n",c)
# {'a': 1, 'b': 2, 'c': 3} 
# 1
# {'a': 1, 'b': 2, 'c': 3, 'd': None} 
# None
-----------------------------------------------------------------------------------------------
6) dict.clear()
功能: 删除字典中的所有元素
举例:
a = {'a': 1, 'b': 2, 'c': 3}
print(a)
a.clear()
print(a)
# {'a': 1, 'b': 2, 'c': 3}
# {}
-----------------------------------------------------------------------------------------------
7) len()
略过
-----------------------------------------------------------------------------------------------
8dict.items()
功能:讲字典中的所有元素以列表的形式返回,每一个键值对为一个元组[(),(),()]
举例:
a = {'a': 1, 'b': 2, 'c': 3}
b = a.items()
print(b)
# dict_items([('a', 1), ('b', 2), ('c', 3)])
平常使用的时候返回值最好使用list()处理以一下,问题不大
print(list(b))
# [('a', 1), ('b', 2), ('c', 3)]
-----------------------------------------------------------------------------------------------
9dict.keys()
功能:以列表形式返回字典的所有键
举例:
a = {'a': 1, 'b': 2, 'c': 3}
b = a.keys()
print(b)
# dict_keys(['a', 'b', 'c'])
-----------------------------------------------------------------------------------------------
10) dict.values()
功能:以列表的形式返回字典的所有值
举例:
a = {'a': 1, 'b': 2, 'c': 3}
b = a.values()
print(b)
# dict_values([1, 2, 3])
----------------------------------------------------------------------------------------------
11dict.update(mydict)
功能:把mydict中的元素添加(更新)到dict中,如果两者有公共元素,则以mydict中的元素的值为最后结果
举例:
a = {'a': 1, 'b': 2, 'c': 3}
b = {"a":2,"d":4}
a.update(b)
print(a)
# {'a': 2, 'b': 2, 'c': 3, 'd': 4} 可以看到相同的元素,键"a"对应的值变成了b中的"a"对应的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值