1.字典相關(guān)操作
1)運(yùn)算符
字典不支持+乳怎、*前弯、<、>询枚、<=浙巫、>=刷后;只支持:==憨闰,礁阁!=
print({'a': 2, 'b': 3} == {'b': 3, 'a': 2}) # True
2)in/not in
鍵 in 字典 - 判斷字典中是否存在指定的鍵
dict1 = {'a': 2, 'b': 3}
print(10 in dict1) # False
print('a' in dict1) # True
3)相關(guān)函數(shù)
- len()
- dict(序列) - 將其他數(shù)據(jù)轉(zhuǎn)換成字典含衔;數(shù)據(jù)本身必須是序列嘶炭,序列中的元素是小序列眨猎,小序列有且只有兩個元素强经,第一個元素不可變
字典不能轉(zhuǎn)換成數(shù)字,但可以轉(zhuǎn)換成布爾兰迫;
字典可以轉(zhuǎn)列表
seq = ('ab', '12', '34')
print(dict(seq))
student1 = {'name': '小明', 'age': 19, 'gender': '男'}
list1 = list(student1)
print(list1)
4)相關(guān)方法
a.字典.clear() - 清空字典
student = {'name': '小明', 'age': 19, 'gender': '男'}
student.clear()
print(student)
b.字典.copy() - 拷貝字典產(chǎn)生一個新的字典(淺拷貝)
student = {'name': '小明', 'age': 19, 'gender': '男'}
new_student = student.copy()
print(new_student)
new_student['name'] = '小華'
print(student, new_student)
c.dict.fromkeys(序列炬称,值) - 創(chuàng)建一個字典,將序列中的元素作為key,key對應(yīng)的value都是指定的值
dict2 = dict.fromkeys(['name', 'color', 'gender', 'age'], 100)
print(dict2)
d.字典.item() - 將字典中所有的鍵值對都轉(zhuǎn)換成元組作為一個序列的元素
student = {'name': '小明', 'age': 19, 'gender': '男'}
print(student.items()) # dict_items([('name', '小明'), ('age', 19), ('gender', '男')])
# 字典.value() - 獲取字典中所有的值据德,返回一個序列
print(student.values()) # dict_values(['小明', 19, '男'])
# 字典.keys() - 獲取字典中所有的鍵跷车,返回一個序列
print(student.keys()) # dict_keys(['name', 'age', 'gender'])
e.字典.setdefault(key,value) - 當(dāng)key不存在的時候添加鍵對(不會修改)
student = {'name': '小明', 'age': 19, 'gender': '男'}
student.setdefault('score', 90)
print(student)
# student['score'] = 80
student.setdefault('score', 80)
print(student)
f.字典1.update(字典2) - 將字典2中的鍵對添加到字典1中
person = {'name': '小明', 'height': 179, 'weight': 70}
student.update(person)
print(student) # {'name': '小明', 'age': 19, 'gender': '男', 'score': 90, 'height': 179, 'weight': 70}
5)字典數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)
system = {
'user_name': 'abc',
'password': '123123',
'manager': {'name': '張三', 'tel': '19102190192'},
'student': [
{'name': 'a', 'study_id': '111', 'age': 16},
{'name': 'b', 'study_id': '112', 'age': 18},
{'name': 'c', 'study_id': '113', 'age': 19}
]
}
2.集合
1.什么是集合(set)
a.集合
集合是容器型數(shù)據(jù)類型朽缴;將{}作為容器標(biāo)志密强,多個元素用逗號隔開:{元素1,元素2或渤,...}
集合是可變的劳坑,無序的
b.元素
集合中的元素必須是不可變的數(shù)據(jù),而且是唯一(自帶去重功能)
set1 = {12, 'an', (10, 20)}
print(set1)
# set2 = {12, 'an', [10, 20]} # TypeError: unhashable type: 'list'
set3 = {12, 'an', (10, 20), 12}
print(set3)
print({1, 2, 3} == {3, 2, 1}) # True涝开,說明無序
# {}表示空字典
set4 = {}
print(type(set4)) # <class 'dict'>
# 空集合
set5 = set([])
print(type(set5)) # <class 'set'>
# 集合去重:set(序列) - 將序列轉(zhuǎn)換成集合(自動去重)
list1 = [11, 29, 90, 11, 28, 7, 66]
list1 = list(set(list1))
print(list1)
2)集合元素的增刪改查 (不重要)
a.查 - 獲取集合元素,只有遍歷一種方法
for 變量 in 集合:
pass
補(bǔ)充:遍歷字典和集合的時候拄养,其實(shí)是遍歷將字典或者集合轉(zhuǎn)換成的列表
names1 = {'c', 'b', 'a'}
for name in names1:
print(name)
b.增
a.集合.add(元素) - 在集合中添加一個元素
b.集合.update(序列) - 將序列中的元素添加到集合中
names1.add('d')
print(names1)
names1.update([100, 200])
print(names1)
names1.update('how')
print(names1)
c.刪:集合.remove(元素) - 刪除集合中指定的元素
names1.remove('a')
print(names1)
d.改 (不支持改操作)
3)集合相關(guān)操作
a.運(yùn)算符:只支持判斷相等的==银舱,!=
# print({1, 2, 3} + {4, 5}) 不支持
b.in / not in
names1 = {'c', 'b', 'a'}
print('a' in names1) # True
c.len,max,min,sum,sorted,set
4)數(shù)學(xué)集合運(yùn)算(重要棋弥!)
python中的集合直接支持?jǐn)?shù)學(xué)的集合運(yùn)算:|(并集)诚欠,&(交集),-(差集)粉寞,^(對稱差集)左腔,>/<(判斷包含)
set1 = {1, 2, 3, 4, 5}
set2 = {3, 9, 2, 4, 0, 8}
# 1)集合1 | 集合2 - 將兩個集合合并在一起
print(set1 | set2)
# 2)集合1 & 集合2 - 獲取兩個集合的公共部分
print(set1 & set2)
# 3)集合1 - 集合2 - 獲取集合1中除了集合2剩下的部分
print(set1 - set2)
print(set2 - set1)
# 4)集合1 ^ 集合2 - 獲取集合1和集合2除了公共部分以外的部分
print(set1 ^ set2)
# 5)集合1 > 集合2 - 判斷集合1中是否包含集合2(判斷集合2是否是集合1的子集)
print(set1 > set2) # False
print({1, 2, 3} > {1}) # True
字符串和字符
1)什么是字符串(str)
字符串是容器型數(shù)據(jù)類型(序列)液样;將''或""作為容器的標(biāo)志,多個字符(元素)直接包含在引號中
字符串是不可變的双炕、有序的
str1 = ''
str2 = 'akq,1哈哈'
2)字符串中的元素(字符)
字符串中元素叫字符
1)普通字符
2)轉(zhuǎn)義字符:在指定的符號或者字母前加\來表示特殊功能或者特殊意義的字符
' - 表示一個單引號
" - 表示一個雙引號
\n - 換行符
\t - 制表符
\ - 表示一個
注意:一個轉(zhuǎn)義字符的長度是1
str3 = '123\'abc'
print(str3)
str4 = '床前明月光撮抓,\n疑是地上霜。\n舉頭望明月站超,\n低頭思故鄉(xiāng)乖酬。'
print(str4)
str5 = '\t床前明月光,\n\t疑是地上霜算撮。\n\t舉頭望明月,\n\t低頭思故鄉(xiāng)陷舅。'
print(str5)
str6 = '123\\nabc'
print(str6, len(str6))
3)編碼字符: \u4位的十六進(jìn)制數(shù)表示一個字符审洞;數(shù)字對應(yīng)值是字符對應(yīng)的編碼值
字符編碼:計(jì)算機(jī)在存儲數(shù)據(jù)的時候只能存數(shù)字。計(jì)算機(jī)存儲文字(字符)的時候?qū)嵸|(zhì)存的是文字對應(yīng)的數(shù)字仰剿,每個文字都會對應(yīng)一個固定的數(shù)字痴晦,這個數(shù)字就是字符的編碼。
編碼表:每個字符和數(shù)字的一一對應(yīng)關(guān)系就是編碼表旨袒。常見的編碼表有兩種:ASCII表术辐、Unicode編碼表施无, Unicode編碼表是對ASCII表擴(kuò)展。
chr(編碼值) - 獲取編碼值對應(yīng)的字符
ord(字符) - 獲取字符對應(yīng)的編碼值
str7 = '一\u4e00\u9fa5'
print(str7)
print(chr(97), chr(65))
print(ord('a'), ord('A'))
# 輸出全部中文漢字
count = 0
for code in range(0x4e00, 0x9fa5):
print(chr(code), end='')
count += 1
if count % 20 == 0:
print()