欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一文帶你手撕Python之散列類型

 更新時間:2024年09月18日 09:39:43   作者:2301_80863610  
這篇文章主要介紹了Python字典的定義、操作方法和集合的基本概念,字典以鍵值對形式存儲數(shù)據(jù),可通過鍵訪問值,操作包括增刪改查等,集合是無序不重復的數(shù)據(jù)結構,適用于去重和集合運算,需要的朋友可以參考下

1.字典

思考:如果有多個數(shù)據(jù),例如:“凱子”,“男”,19,如何快速存儲這些數(shù)據(jù)

多數(shù)我們是通過列表進行存儲的

li=['凱子','男',19]

在定義完這個列表之后我們?nèi)绾蝸碚业綌?shù)據(jù)'凱子'呢?

我們可以通過索引

print(li[0])

如果將來數(shù)據(jù)順序發(fā)生改變的話,還能用索引值進行訪問嗎

答案是不能的

數(shù)據(jù)順序發(fā)生變化,每個數(shù)據(jù)的下標也隨之變化,如何保證數(shù)據(jù)順序變化前后能使用同一種方法查找數(shù)據(jù)呢?

那么這里就涉及到了字典

字典的定義

定義:{‘鍵’:'值',‘鍵’:'值'}

1.字典的數(shù)據(jù),都是以鍵值對的方式----鍵和值都要成對出現(xiàn)

2.鍵值對之間用逗號隔開

字典的定義:

d={'name':'凱子','age':19,'sex':'男'}
print(d)
#{'name': '凱子', 'age': 19, 'sex': '男'}
print(type(d))
#<class 'dict'>

獲取字典內(nèi)值的方式:字典[鍵]

#上面已經(jīng)將字典定義好了,但是我們現(xiàn)在怎么進行拿值的操作呢?

#獲取值---字典[鍵]:
#序列類型是有順序的,散列類型是沒有順序的
#字典也是沒有順序的,如果想訪問值的話,我們是需要通過鍵進行獲取的
print(d['name'])
#凱子

#我們將順序進行改變的話我們?nèi)匀荒苓M行訪問

序列類型是有順序的,散列類型是沒有順序的

字典也是沒有順序的,如果想訪問值的話,我們是需要通過鍵進行獲取的

在字典之內(nèi)不管順序怎么變我們都能通過鍵進行訪問

字典注意事項

鍵必須是唯一的

#鍵必須是唯一的
d={'name': '凱子', 'age': 19, 'sex': '男',"name":"小明"}
print(d)
#{'name': '小明', 'age': 19, 'sex': '男'}
#之前定義的凱子就被這個小明給替換掉了

#如果在字典里面出現(xiàn)重復的鍵,那么前面的鍵值對會被后面的鍵值對給替換掉
'''
因為我們之前就說明了
在字典中對數(shù)值的訪問我們只能通過鍵
那么現(xiàn)在有兩個一樣的鍵,那么我們是不知道訪問誰的
所以在字典中鍵必須是唯一的

如果同時出現(xiàn)一樣的鍵,那么前面的鍵值對會被后面鍵值對提壞

如果確實要定義兩個名字的話,我們可以在name后面加上數(shù)字進行區(qū)分
'''

如果在字典里面出現(xiàn)重復的鍵,那么前面的鍵值對會被后面的鍵值對給替換掉

最好的解決方法就是在鍵后面加上數(shù)字進行區(qū)分

鍵值對必須成對出現(xiàn),不然就會報錯

字典中的鍵,只能是不可以修改的類型(字符串、元組、數(shù)字)

所以我們是不能用列表作為鍵

字典的操作方式---增刪改查

1.獲取值---字典[鍵]:獲取對應鍵的值

#獲取小明這個值
#字典[鍵]
print(d['name'])

2.修改值---字典[鍵]=新值

d={'name':'凱子','age':19,'sex':'男'}
d['name']="小紅"
print(d)
#{'name': '小紅', 'age': 19, 'sex': '男'}

3.添加鍵值對---字典[新鍵]=新值

d['name3']='小蘭'
print(d)
#{'name': '小紅', 'age': 19, 'sex': '男', 'name3': '小蘭'}

字典[鍵]=新值

對于這個,鍵存在,那么就是對這個鍵指向的值進行修改

如果不存在的話,就是新添加一個新的鍵以及這個鍵指向的新值

4.獲取字典中的值的方式

1.1字典[鍵]:獲取對應鍵的值

1.2字典.get(鍵,鍵不存在的提示)

print(d.get('name'))
#小紅
print(d.get('age'))
#19

print(d.get('age1'))
#None
'''
這種方式就會進行一個提示,如果我們輸入的鍵是不存在的話
那么就會提示我們None,說明字典里面并沒有這個鍵
'''


#除此之外,我們是可以自己設置這個提示,提醒我們這個鍵不存在
print(d.get('age1','鍵不存在'))
#鍵不存在

我們可以在這個get函數(shù)進行鍵對應值的查找,并且我們還能判斷鍵是否存在

可以對鍵不存在的信息進行設置

5.setdefault(鍵,值)---鍵存在,返回對應的值

鍵不存在就會將鍵值對進行添加

d={'name':'凱子','age':19,'sex':'男'}
print(d.setdefault('name5','kk'))
print(d)

#{'name': '凱子', 'age': 19, 'sex': '男', 'name5': 'kk'}
#這里的name5就是不存在的鍵
#通過這種方法我們直接將這個鍵放到字典中

print(d.setdefault('name5','55'))
print(d)
#{'name': '凱子', 'age': 19, 'sex': '男', 'name5': 'kk'}
#r如果我們輸入的鍵是存在的話,那么我們就不進行額外的操作了

如果我們輸入的鍵是存在的話,那么我們就不進行額外的操作了

如果我們輸入的鍵是不存在的話,那么我們就在這個字典中添加這個鍵以及這個鍵對應的值

但是如果存在的話,我們是不進行額外的操作的

我們僅僅只需要進行鍵對應的值的打印

setdefault返回的一般是鍵對應的值

字典.setdefault(鍵,’數(shù)據(jù)‘)

小回顧:

#當前字典里面有三對鍵值對
#鍵和值之間的分割符是冒號
#鍵值對之間的分隔符是逗號
#用花括號將所有的鍵值對進行包裹
d={'name':"小明",'age':18,'sex':'男'}

#獲取小明這個值
#字典[鍵]
print(d['name'])

#修改值---字典[鍵]=新值
d['name']="小紅"
print(d)


#添加值--字典[新鍵]=新值
d['name1']="小工"
print(d)

#這個name1這個鍵是之前沒出現(xiàn)過的
#所以編譯器會將這個鍵和其對應的值會作為鍵值對添加到字典中

print(d.get('name'))
#小紅

#如果不存在我們想尋找的鍵值對的話,那么編譯器會通過這個函數(shù)將這個鍵值對添加到字典之中
print(d.setdefault('name5',"kaizi"))

print(d)

print(d.setdefault('name'))
#如果這個鍵存在的話,那么setdefault就會返回這個鍵對應的值

6.update()---添加多個鍵值對

字典.update(字典)

update添加多個鍵值對的使用方法:

#{'name': '小紅', 'age': 18, 'sex': '男', 'name1': '小工', 'name5': 'kaizi'}
#在原有的字典中添加鍵值對
d.update({'name2':"小李",'age2':'15'})
print(d)
'''
{'name': '小紅', 'age': 18, 'sex': '男', 'name1': '小工', 'name5': 'kaizi', 'name2': '小李', 'age2': '15'}
'''
#這個就是在update的括號內(nèi)添加一個字典

7.pop(鍵)---刪除指定的鍵值對

#{'name': '小紅', 'age': 18, 'sex': '男', 'name1': '小工', 'name5': 'kaizi'}
#刪除小紅
d.pop('name')
print(d)
'''
{'age': 18, 'sex': '男', 'name1': '小工', 'name5': 'kaizi', 'name2': '小李', 'age2': '15'}

'''

#在列表中對元素進行刪除的時候使用pop我們在括號內(nèi)不輸入元素的索引值
#那么默認就是刪除最后一個元素
#但是現(xiàn)在我們這里的字典的話使用刪除的方法的時候我們一定要在括號內(nèi)加上要刪除的鍵值對的鍵

在列表中對元素進行刪除的時候使用pop我們在括號內(nèi)不輸入元素的索引值

那么默認就是刪除最后一個元素

但是現(xiàn)在我們這里的字典的話使用刪除的方法的時候我們一定要在括號內(nèi)加上要刪除的鍵值對的鍵

pop的內(nèi)容里面必須要有內(nèi)容,沒有內(nèi)容的話就是會報錯的

8.poptiem()---刪除最后一個鍵值對

d.popitem()
print(d)
#{'age': 18, 'sex': '男', 'name1': '小工', 'name5': 'kaizi', 'name2': '小李'}
d.popitem()
print(d)
#{'age': 18, 'sex': '男', 'name1': '小工', 'name5': 'kaizi'}

#返回關鍵字和值構成的元組

print(d.popitem())
#('name5', 'kaizi')
print(d)
#{'age': 18, 'sex': '男', 'name1': '小工'}
print(d.popitem())
#('name1', '小工')

#返回的值就是要刪除的鍵值對組成的元組
#返回關鍵字和值構成的元組

print(d.popitem())
#('name5', 'kaizi')
print(d)
#{'age': 18, 'sex': '男', 'name1': '小工'}
print(d.popitem())
#('name1', '小工')

#返回的值就是要刪除的鍵值對組成的元組

9.values()獲取字典中所有的值

字典.values()

d={'name':"小明",'age':18,'sex':'男',"name1":"小紅"}
print(d.values())
#dict_values(['小明', 18, '男', '小紅'])
for i in d.values():
    print(i)

'''
小明
18
男
小紅

對于這個循環(huán)的寫法,我們編譯器會先執(zhí)行這個d.values的方法,
print(d.values())
#dict_values(['小明', 18, '男', '小紅'])
獲取到字典中的值
這些值都被存在一個列表中
然后我們i遍歷這個列表打印每一個值
'''

我們將d.values寫到for循環(huán)的條件中

我們先進行d.values的編譯,然后生成了一個列表,這個列表里面存著的就是這個字典里面的數(shù)據(jù)

然后i進行這個列表的遍歷,然后進行數(shù)據(jù)的打印

10.keys()---獲取字典中所有的鍵

d={'name':"小明",'age':18,'sex':'男',"name1":"小紅"}
print(d.keys())
#dict_keys(['name', 'age', 'sex', 'name1'])
#同樣,獲取的鍵也會存在列表中
#那么我們也可以同樣利用for循環(huán)遍歷這個鏈表進行鍵的打印

for i in d.keys():
    print(i)

'''
name
age
sex
name1

'''

將獲取的鍵存在列表中,利用for循環(huán)進行遍歷列表,打印每一個鍵

11.items()---獲取字典中所有的鍵值對

#利用items就能獲取這個字典內(nèi)的鍵值對,得到的鍵值對會被存在列表中
#每一個鍵值對在列表中存在的元素是元組形式的
d={'name':"小明",'age':18,'sex':'男',"name1":"小紅"}
print(d.items())
'''
dict_items([('name', '小明'), ('age', 18), ('sex', '男'), ('name1', '小紅')])
'''

#我們從這個存儲鍵值對的列表中進行遍歷,打印每一個鍵值對

for i in d.items():
    print(i)
'''
('name', '小明')
('age', 18)
('sex', '男')
('name1', '小紅')
'''

用鍵:值這個格式將字典內(nèi)的鍵值對表示出來

因為我們使用items獲取到的鍵值對是以元組形式存進這個列表的

那么我們隨著i的變化就能進行列表中所有鍵值對的訪問,也就是對元組的訪問

那么我們是可以通過索引值訪問元組內(nèi)的元素的

這個元組內(nèi)的元素下標為0就是鍵,1就是鍵指向的數(shù)據(jù)

那么我們就可以利用循環(huán)將這個格式進行輸出

利用索引值將鍵值隊的格式表現(xiàn)出來:

#鍵值對存在列表中
#對于這個循環(huán)來說,i存放的數(shù)據(jù)是鍵值對的數(shù)據(jù),鍵值對輸出的格式是---鍵:值
#因為鍵值對存在列表中,所以我們是可以用下標進行訪問的

d={'name':"小明",'age':18,'sex':'男',"name1":"小紅"}
print(d.items())
#dict_items([('name', '小明'), ('age', 18), ('sex', '男'), ('name1', '小紅')])
for i in d.items():
    #print(i)
    #通過索引的方式將鍵和值單獨的獲取
    #鍵值對在這個列表中存在的形式是元組
    #通過i的變化,我們訪問每一個鍵值對
    #那么我們就可以用i+索引進行元組內(nèi)元素的訪問的操作了
    print(i[0])#訪問的是鍵
    print(i[1])#訪問的是值

    print(f'{i[0]}:{i[1]}')
'''
那么我們通過循環(huán)就打印出這么個樣子
name:小明
age:18
sex:男
name1:小紅

和我們預期的是一樣的
'''

除了使用索引,我們還能使用拆包的方法

回顧一下什么事拆包

元組可以同時賦值給多個變量,只要變量個數(shù)不超過元組長度,變量前面加上* 號則可以將多于元素都接受,并組成一個列表

d={'name':"小明",'age':18,'sex':'男',"name1":"小紅"}
print(d.items())
#dict_items([('name', '小明'), ('age', 18), ('sex', '男'), ('name1', '小紅')])
for i in d.items():
    a,b=i
##    print(a)
##    print(b)
    print(f'{a}:')
'''
隨著i的遍歷,每次都指向著不同的元組,就是指向不同的鍵值對
那么所以說i種存在兩個值,就是鍵和鍵指向的值
那么我們就利用元組的拆包的操作
將鍵值對這兩個值存在我們創(chuàng)建的兩個變量中
a就是存儲鍵
b就是存儲值了
那么我們利用循環(huán),i遍歷整個列表我們將整個列表中的元素都進行打印了
'''
#兩種方法都能實現(xiàn)我們想要的效果
'''
name:小明
age:18
sex:男
name1:小紅

'''

2.集合

集合的概念以及定義(包括空集合)

集合的定義:{元素1,元素2…….}

i={1,5,6}
print(type(i))
#<class 'set'>

那么空集合該怎么進行使用呢?

如果我們光寫一個花括號的話,那么這個是不是就能表示空集合呢?

答案是不能的

q={}
print(type(q))
#<class 'dict'>

最后打印出來的類型是一個字典

所以說一個空的花括號表示的是字典

其實空集合的創(chuàng)建是set()

o=set()
print(type(o))
#<class 'set'>

所以set就是集合的表示方式

創(chuàng)建空集合一定要使用set()

集合的特點

1.集合是和字典是一樣的,元素是沒有順序的

所以我們在打印集合的時候打印出來的數(shù)據(jù)的順序都是隨機的

2.集合內(nèi)的元素都是唯一的

如果我們在定義集合元素的時候有多個相同的元素的話,那么我們在打印的時候指只會保留一個

j={1,2,3,'hu',5,6,1,5}
print(j)

#{1, 2, 3, 5, 6, 'hu'}

所以集合是無序不重復的散列

集合的操作

1.去重:利用集合的特點---元素是唯一的

#對列表進行去重的操作
li=[12,56,89,56,16]

#將列表轉(zhuǎn)換為集合的類型
j2=set(li)
print(j2)
#{56, 89, 12, 16}
#然后將集合轉(zhuǎn)換為列表,然后這個列表就完成了去重的操作了
li=list(j2)
print(li)

如果一個列表需要進行去重的話,我們就可以將這個列表轉(zhuǎn)換為集合然后進行去重的操作

2.修改

對于集合的話我們是沒有直接的修改的操作的

我們只能先刪除再添加

3.添加

#### 3.1 add(元素)---添加元素到集合中

我們說加什么add就加什么,不會做額外的操作

#添加操作
j={1,2,3,'hu',5,6,1,5}
j.add("你好啊")
print(j)
#{1, 2, 3, 'hu', 5, 6, '你好啊'}

#### 3.2 upodate(序列/散列)

這個函數(shù)會將我們輸入的要添加的序列或者是散列給拆分了

#添加序列的話
#update(序列/散列)
j.update("你好")
print(j)
#{1, 2, 3, 5, 6, 'hu', '你', '好', '你好啊'}
#可以發(fā)現(xiàn)我們后面輸入的被拆開了
#將我們輸入的序列或者是散列類型的數(shù)據(jù)拆開放到集合中

括號內(nèi)是不能夠?qū)憯?shù)字的,會報錯,因為括號內(nèi)只能寫序列和散列

4.刪除

#### 4.1remove(指定元素)

我們是需要指定值進行操作的

j={1,2,3,'hu',5,6,1,5}
j.remove("hu")
print(j)
#{1, 2, 3, 5, 6}
j.remove(5)
print(j)
#{1, 2, 3, 6}

#### 4.2pop()---刪除隨機元素

之所以刪除隨機元素,因為數(shù)據(jù)的位置都是隨意變動的

#{1, 2, 3, 6}

j.pop()

print(j)
#{2, 3, 6}

5.交集、并集

只有集合里面存在這個概念

#### 5.1交集----- &

取出兩個集合中相同的內(nèi)容

a={1,2,3,4}
b={3,4,5,6}
print(a&b)
#{3, 4}

#### 5.2并集----- |

兩個集合合并在一起

a={1,2,3,4}
b={3,4,5,6}
print(a|b)
#{1, 2, 3, 4, 5, 6}

集合中每個數(shù)據(jù)都是唯一的

那么出現(xiàn)的兩個3和兩個4最后都只保留了一個

要遵循集合的規(guī)則

至此,我們的數(shù)據(jù)類型就學完了

運算符的優(yōu)先級

賦值元素符就是左右兩邊的內(nèi)容進行指定的算術運算再將結果賦值給左邊的變量

成員運算符

成員運算符有兩個:in not in

成員運算符在序列和散列居多

主要是判斷某個內(nèi)容在這一堆是否存在

使用格式:數(shù)據(jù) in 序列/散列

判斷數(shù)據(jù)是不是序列/散列的成員

成員運算符的使用

#判斷字符p是不是python的成員
print('p'in'pyhton')
#True

li=['李四''張三''王二']
if "小明" in li:#判斷小明在不在名字列表里面
    print(True)
else:
    print(False)
#False

#判斷字符q是否不是python的成員
print('q'not in'pyhton')
#not in 的操作就是和in的操作是相反的

身份運算符

看的是你引用的是不是同一塊內(nèi)存空間的內(nèi)容

is判斷兩個內(nèi)容是不是同一個地址

is not相反

a=1
b=a
c=2
print(a is b)#True
#a和b指定同一塊空間
print(a is c)#False
#a和c不指向同一塊空間

print(f'a:{id(a)}')
print(f'b:{id(b)}')
print(f'c:{id(c)}')
#a:1535758792
#b:1535758792
#c:1535758808


#可見, 我們通過id()這個函數(shù)我們就能看的出a和b二檔地址與c是不同的

#is判斷兩個內(nèi)容是不是同一個地址
#is  not相反

使用id()能查看數(shù)據(jù)的地址

可變復制---copy()

在進行重要數(shù)據(jù)的賦值之前

我們需要對這個數(shù)據(jù)進行一個拷貝復制,因為這個數(shù)據(jù)一但被修改了就不能回復了

所以我們需要提前將這個數(shù)據(jù)進行復制一下

對于可以修改的數(shù)據(jù)類型,之前的數(shù)據(jù)就沒有了

且不能恢復

如果想保留修改之前的數(shù)據(jù)

我們需要提前備份一份數(shù)據(jù)

我們需要使用到copy()函數(shù)

copy()函數(shù)的使用方式:

li=[1,2,3,4,5]
print(id(li))#72456872
li1=li.copy()
print(li1)
#[1, 2, 3, 4, 5]
print(id(li1))#72456840

我們使用copy去備份數(shù)據(jù)的時候,copy會去額外申請一個空間去放這個備份的數(shù)據(jù)

備份類型直接對于只能修改的類型

列表、字典、集合

如果我們是想通過賦值來達到備份的效果,這個是不可能的

因為我們賦值出來的對象與原先的對象都指向著同一塊空間的

那么我們將原先對象進行改變,那么備份的對象也會被改變,因為都指向同一塊空間

所以我們需要copy()來專門進行備份的操作

通過copy會額外申請一塊空間

3.回顧

1.數(shù)值類型

整型 int 整數(shù) 不可以修改的

浮點型 float 帶小數(shù)點的數(shù)字 不可以修改的

布爾型 bool True(真1)、False(假0) 不可以修改的

2.序列類型(索引、切片)

字符串 str 用引號括起來的內(nèi)容 不可以修改的(存在修改方法,但是會生成新的字符串)

列表 list [元素1,元素2] 可以修改

元組 tuple (元素1,元素2) 不可以修改的

3.散列類型

字典 dict {鍵:值,鍵:值} 可以修改

集合 set {元素1,元素2} 可以修改

題目

1.用戶登錄

如果用戶名存在就輸入密碼,當密碼正確的時候就顯示登錄成功并且退出程序

如果用戶名不存在則提示用戶注冊

判斷用戶是否存在

存在---輸入密碼

不存在---提示用戶注冊

students =[
{'name':'張三','password':123},
{'name':'王五','password':888},
{'name':'趙六','password':456}
]
name=input("請輸入用戶名:")
for i in students:
    #i存在的是用戶的信息字典
    if name==i['name']:
        #對輸入的用戶名進行判斷
        for n in range(1,4):
            #循環(huán)3次進行輸入密碼的操作,如果輸入正確直接跳出循環(huán)
            pwd=eval(input("請輸入密碼:"))
            if pwd==i['password']:
                print('登錄成功')
                exit()
                #break#只能退出當前所在的循環(huán),就是跳出了里面的循環(huán),還是處于外部循環(huán)
            else:
                print(f'密碼錯誤,還剩{3-n}次機會')
    #if name==i['name'] and pwd==i['password'] :
        break
else:#循環(huán)正常結束執(zhí)行,即沒有break語句
    print("用戶名不存在")

#對于這個程序的話,我們 不管輸入什么最后都會打印這個用戶名不存在
#我們內(nèi)循環(huán)里面的break僅僅只夠我們跳出內(nèi)部循環(huán)
#但是沒有跳出外部循環(huán),這就是為什么會打印else的那句話
#那么我們就在外部循環(huán)加上一個判斷語句,如果條件成立就直接跳出
#那么就不會進行這個循環(huán)后面的代碼了

#總結,就是break只能退出當前所在的循環(huán),所以在外邊循環(huán)中我們需要再寫一個break跳出外部循環(huán)

#對于后面的這個else語句來說
#循環(huán)正常結束執(zhí)行,即沒有break語句


#但是我們在內(nèi)循環(huán)break的位置加一個exit()
#我們直接退出這個程序,那么就沒有后面else的事了

#如果后面有代碼的話,這個exit()影響到了后面代碼的執(zhí)行的話
#那么我們就使用break來跳出
#兩個break
students =[
{'name':'張三','password':123},
{'name':'王五','password':888},
{'name':'趙六','password':456}
]
name=input("請輸入用戶名:")
for i in students:
    #print(i)
    if name in i.values():
        #獲取當前字典內(nèi)的值
        #我們在這里需要用到字典相關的函數(shù)--values去獲取字典內(nèi)的值
        #查看當前遍歷到的字典有沒有我們輸入的name
        #print("存在")
        for n in range(3):
            pws=int(input("請輸入密碼:"))
            if pws==i['password']:
                print("登錄成功")
                exit()
            else:
                print(f"密碼錯誤,還剩{3-n}次機會")


else:#循環(huán)正常結束才會執(zhí)行
    print("用戶名不存在")
#在這個代碼里面只有一個循環(huán)
#那么我們在break之后我們就不會觸發(fā)這個else了,我們直接跳出循環(huán)了
#我們這里的break跳出循環(huán)是非正常循環(huán)的

2.數(shù)字重復統(tǒng)計:

'''
數(shù)字重復統(tǒng)計:
(1)隨機生成1000個整數(shù)  
import.random
random.randint
(2)數(shù)字的范圍[20,100]
(3)升序輸出所有不同的數(shù)字及每個數(shù)字重復的次數(shù)
'''
import random
li=[]#創(chuàng)建一個空列表
for i in range(1000):
    num=random.randint(20,100)
    print(num)
    li.append(num)#我們將每次循環(huán)產(chǎn)生的數(shù)添加到這個列表中

print(li)

#升序輸出所有不同的數(shù)字---去重(轉(zhuǎn)換為集合),排序(sort)
li1=list(set(li))
#先轉(zhuǎn)換為集合再轉(zhuǎn)換為列表,我們就達到了去重的效果
print(li1)
li1.sort()#默認是從小到大,升序的
print(li1)

#每個數(shù)字重復的次數(shù)---統(tǒng)計數(shù)字出現(xiàn)的次數(shù)(序列.count(數(shù)據(jù)))
for i in li1:#遍歷去重的列表
    #進行統(tǒng)計,對沒有機芯工去重的列表進行統(tǒng)計
    x=li.count(i)
    print(f'{i}出現(xiàn)了{x}次')

#我們所有的數(shù)字已經(jīng)在li1里面了,而且沒有重復的
#那么我們將這個列表作為外循環(huán)的條件進行遍歷
#然后我們在li這個鏈表即興每次遍歷的數(shù)字的出現(xiàn)次數(shù)的計算


#我們需要將元素存儲起來
#那么存放多個元素的有什么呢?
#列表、元組(不可修改)、字典(鍵值對)、集合
#那么最后只有列表和集合方便
#這個題的要求是還要統(tǒng)計重復數(shù)字的次數(shù)而且保存重復的數(shù)字
#那么我們直接將字典排除了
#因為字典是去重的
#那么最后我們就使用列表來對這些數(shù)字進行存儲

我們在最后統(tǒng)計每個數(shù)字出現(xiàn)的次數(shù)

我們將每個數(shù)字進行去重

然后針對每個數(shù)字進行計數(shù)

通過這里的代碼就會縮短時間

如果我們是對1000個數(shù)字一個一個進行遍歷的話會很慢的

我們第一步直接將出現(xiàn)的數(shù)字縮水顯現(xiàn)出來

然后我們再在原先的列表中進行遍歷計算這個數(shù)字出現(xiàn)的次數(shù)

總結

到此這篇關于一文帶你手撕Python之散列類型的文章就介紹到這了,更多相關Python散列類型內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 詳解如何使用Plotly和Dash進行數(shù)據(jù)可視化

    詳解如何使用Plotly和Dash進行數(shù)據(jù)可視化

    數(shù)據(jù)可視化是數(shù)據(jù)分析中至關重要的一環(huán),它能夠幫助我們更直觀地理解數(shù)據(jù)并發(fā)現(xiàn)隱藏的模式和趨勢,本文將介紹如何使用Plotly和Dash進行數(shù)據(jù)可視化,感興趣的可以了解下
    2024-04-04
  • Python操作Word批量生成文章的方法

    Python操作Word批量生成文章的方法

    這篇文章主要介紹了Python操作Word批量生成文章的方法,需要的朋友可以參考下
    2015-07-07
  • Python集合set()使用的方法詳解

    Python集合set()使用的方法詳解

    這篇文章主要為大家詳細介紹了Python集合set()使用的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • Python+OpenCV六種實時圖像處理詳細講解

    Python+OpenCV六種實時圖像處理詳細講解

    OpenCV常用的圖像處理為閾值二值化、邊緣檢測、輪廓檢測、高斯濾波、色彩轉(zhuǎn)換、調(diào)節(jié)對比度。本文主要介紹了利用Python和OpenCV對實時圖像進行上述六種操作的詳細講解,感興趣的可以了解一下。
    2021-11-11
  • 利用Python腳本實現(xiàn)自動刷網(wǎng)課

    利用Python腳本實現(xiàn)自動刷網(wǎng)課

    這篇文章主要介紹了利用Python腳本實現(xiàn)自動刷網(wǎng)課,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • Python實現(xiàn)的微信公眾號群發(fā)圖片與文本消息功能實例詳解

    Python實現(xiàn)的微信公眾號群發(fā)圖片與文本消息功能實例詳解

    這篇文章主要介紹了Python實現(xiàn)的微信公眾號群發(fā)圖片與文本消息功能,結合實例形式詳細分析了Python調(diào)用微信接口實現(xiàn)微信公眾號群發(fā)圖片與文本消息的具體操作步驟與相關注意事項,需要的朋友可以參考下
    2017-06-06
  • Python+OpenCV之直方圖均衡化詳解

    Python+OpenCV之直方圖均衡化詳解

    直方圖均衡化是一種增強圖像對比度的方法,其主要思想是將一副圖像的直方圖分布變成近似均勻分布,從而增強圖像的對比度。本文將通過示例為大家講講直方圖均衡化的原理與實現(xiàn),感興趣的可以了解一下
    2022-09-09
  • Python itertools.product方法代碼實例

    Python itertools.product方法代碼實例

    這篇文章主要介紹了Python itertools.product方法代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03
  • 簡單介紹Python中的struct模塊

    簡單介紹Python中的struct模塊

    這篇文章主要介紹了Python中的struct模塊,代碼基于Python2.x版本,需要的朋友可以參考下
    2015-04-04
  • Python模擬脈沖星偽信號頻率實例代碼

    Python模擬脈沖星偽信號頻率實例代碼

    這篇文章主要介紹了Python模擬脈沖星偽信號頻率實例代碼,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01

最新評論