|
楼主 |
发表于 2020-2-25 20:52:30
|
显示全部楼层
本帖最后由 我叫什么啊 于 2020-3-4 17:09 编辑
026/027 字典
>>> brand = ["李宁","耐克","阿迪达斯","鱼C"]
>>> slogen = ["一切皆有可能","Just do it","Impossible is nothing","让编程改变世界"]
>>> print('' , slogen[brand.index('鱼C')])
让编程改变世界
index( ): 返回索引值
字典:由多个 key 及其对应的 value 共同组成。(映射)
(字典用大括号,列表用中括号,元组用小括号或直接逗号隔开)>>> dict1 = {"李宁":"一切皆有可能","耐克":"Just do it","阿迪达斯":"Impossible is nothing","鱼C":"让编程改变世界"}
>>> print("FishC口号:", dict1['鱼C'])
FishC口号: 让编程改变世界
>>> dict2 = {1:'one', 2:'two', 3:'three'}
>>> dict2
{1: 'one', 2: 'two', 3: 'three'}
>>> dict2[3]
'three'
创建空的字典:
dict(mapping) : dict 只用一个参数,即映射类型的参数。是个工厂函数(类型),类:str( ), list( ), int( ), tuple( )>>> dict3 = dict((('F',70),('i',105),('s',115),('h',104),('C',67)))
>>> dict3
{'F': 70, 'i': 105, 's': 115, 'h': 104, 'C': 67}
>>> dict4 = dict(小甲鱼 = '123', 嗷嗷嗷 = '456' )
>>> dict4
{'小甲鱼': '123', '嗷嗷嗷': '456'}
>>> dict4['嗷嗷嗷'] = '789'
>>> dict4
{'小甲鱼': '123', '嗷嗷嗷': '789'}
>>> dict4['爱迪生'] = '1 + 99'
>>> dict4
{'小甲鱼': '123', '嗷嗷嗷': '789', '爱迪生': '1 + 99'}
字典中象的排列是随机的
fromkeys( ): dict.fromkeys(S[, v]) 直接创建一个新的字典对象,不可用于修改原本的字典
>>> dict1.fromkeys((1,2,3))
{1: None, 2: None, 3: None}
>>> dict1.fromkeys((1,2,3), 'Test')
{1: 'Test', 2: 'Test', 3: 'Test'}
>>> dict1.fromkeys((1,2,3), ('Test1','Test2'))
{1: ('Test1', 'Test2'), 2: ('Test1', 'Test2'), 3: ('Test1', 'Test2')}
>>> dict1.fromkeys((1,3), ('Test1','Test2'))
{1: ('Test1', 'Test2'), 3: ('Test1', 'Test2')}
[注] 第二个参数会整体赋值,且不能用于修改字典,只会重新创造字典
创建新字典:>>> dict1 = dict1.fromkeys(range(3), 'Y')
>>> dict1
{0: 'Y', 1: 'Y', 2: 'Y'}
打印出所有的Key:>>> for eachKey in dict1.keys():
print(eachKey)
0
1
2
打印出所有的Value:>>> for eachValue in dict1.values():
print(eachValue)
Y
Y
Y
打印出所有的象:>>> for eachItem in dict1.items():
print(eachItem)
(0, 'Y')
(1, 'Y')
(2, 'Y')
用 get( ) 访问字典的象,如果没有(如越界了),会打印一个None>>> print(dict1[3])
Traceback (most recent call last):
File "<pyshell#39>", line 1, in <module>
print(dict1[3])
KeyError: 3
>>> dict1.get(3)
>>> print(dict1.get(3))
None
也可以自己设置当无数据时的输出,在有数据时则输出原本的数据:>>> dict1.get(3,'无数据')
'无数据'
>>> dict1.get(1,'无数据')
'Y'
成员操作符: in 和 not in , 也可以用来查找字典中是否有所查询的Key
(字典用键Key查找,而不是值Value; 序列用值查找)>>> 2 in dict1
True
>>> 3 in dict1
False
>>> dict3
{'F': 70, 'i': 105, 's': 115, 'h': 104, 'C': 67}
>>> 'F' in dict3
True
clear() : 清空字典
以下方式不严谨,只是换了个空字典,但原字典还在
copy( ): 浅拷贝,只是对对象表层的拷贝(随后会继续深入讲解)
赋值不是浅拷贝,只是又给字典贴了标签>>> dict1
{0: 'Y', 1: 'Y', 2: 'Y'}
>>> dict2 = dict1.copy()
>>> dict3 = dict1
>>> dict3
{0: 'Y', 1: 'Y', 2: 'Y'}
>>> dict2
{0: 'Y', 1: 'Y', 2: 'Y'}
>>> id(dict1)
2331611541248
>>> id(dict2)
2331611598656
>>> id(dict3)
2331611541248
dict1 与 dict3 要变一起变, dict2 不受另两个影响
pop( ) : 可弹出指定 Key 的 值 Value
popitem( ): 可认为是随机从字典里弹出一个象
setdefault( ): 查找指定 Key 的 Value ,若查不到指定 Key 就自动添加进去(也可以直接赋值)
>>> dict1.pop(2)
'Y'
>>> dict1
{0: 'Y', 1: 'Y'}
>>> dict1.popitem()
(1, 'Y')
>>> dict1
{0: 'Y'}
>>> dict1.setdefault('阿易','666')
'666'
>>> dict1
{0: 'Y', '阿易': '666'}
update( ) : 用字典或一个映射关系去更新另一个字典>>> dict1
{0: 'Y', '阿易': '666'}
>>> dict2
{0: 'Y', 1: 'Y', 2: 'Y'}
>>> dict2.update(dict1)
>>> dict2
{0: 'Y', 1: 'Y', 2: 'Y', '阿易': '666'}
|
|