|
楼主 |
发表于 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'}
复制代码
|
|