導航:首頁 > 編程語言 > python字典index

python字典index

發布時間:2023-01-31 18:26:26

① 如何在python中實現一個自定義的列表或字典

在很多的python庫之中,我們可以看到有的時候,庫作者會使用一些很特殊的「列表」或者「字典」。雖然他們看起來很像是一個列表或者字典,但是使用的方法卻又不一樣,這是因為那不是真的python中原本的列表和字典,而是作者自己創建的。那麼,我們如何可以創建我們自己的列表和字典呢?

前後都使用兩個下劃線的方法,一般被稱之為魔法方法,比如我們常見的 init ,就是一種魔法方法。一般來說,我們自行定義變數名的時候,不要定義很像是魔法方法的變數名。魔法方法被定義後,可以在適當的時候自動被調用,一般不需要手動對其進行調用。

在python中,實現一個序列,我們需要以下四種魔法方法

另外,一般來說,錯誤的鍵應當引發TypeError異常,而錯誤的索引應當引發IndexError異常

在python的列表中,只能夠使用數字作為索引,如果使用字元串的數字的話,那麼會引發異常。因此,我們可以嘗試一下,對原始的列表進行擴充,使其可以接受字元串作為列表的索引。

注意,這樣的自建列表,存在很多問題,幾乎全部的關於列表的方法都不能再被使用了。

為了解決正常列表的方法不能再被使用,我們可以考慮直接繼承list,以此得到普通列表的所有方法。

② Python裡面的字典能不能通過值value來找到對應的鍵key

Python裡面的字典能不能通過值value來找到對應的鍵key
可以的。例:
d = {'1':'one','2':'two','3':'three'}
last = d.values()[2]
second = d['2']

print(last)
print(second)
輸出:
two
two
明白了嗎?還沒有的話可以追問

③ python自學筆記13:元組和字典的操作

定義元組(tuple):

t1=(1,2,3,4)#多個數據元組

t2=(1,)#如果元組內只有一個數據,也需要手逗號隔開,否則這個數據將是他本身的類型。

元組的操作:

元組類型數據不支持修改,可查找

查找:

按下標查找:

print(t1[1])

函數查找:

print(t1.index(1))返回對應下標,如果數據不存在,程序將報錯

print(t1.count(1))統計數據在元組當中出現的次數

print(len(t1))統計元組當中的數據個數

注意:當元組內嵌套列表數據,可以通過下標的方法對列表數據進行修改如:

t3=(1,2,["a","b"])

t3[2][0]=c #t3的值將變為(1,2,["c","b"])

——————————————————

——————————————————

定義字典(dict)

字典的特點

1:符號為{}

2:數據為鍵(key)值(value)對形式,每個鍵值對之間用逗號隔開如:

dict1={"name":"小明","age":18,"gender:男"}

字典的操作:

dict1["name"]="小紅"

dict1["id"]=3

如果key存在,將修改其所對應的值。如果不存在,將在字典最後添加該鍵值對

2.刪除數據

del():刪除字典或刪除字典內的鍵值對

del dict1["name"] 刪除字典內的鍵值對,如果刪除的key不存在,程序將會報錯

del(del)刪除字典

clear(dict1) 清空字典

3.查找數據

一.按照key進行查找,最後返回相對應的值

二.按函數進行查找:

(1) get(key,默認值):

如果查找的key不存在則返回所寫的默認值,如果不寫默認值則返回None

dict1={"name":"小明","age":18,"gender:男"}

print(dict1.get("name")) #小明

print(dict1.get("id",110)) # 110

——————————————————

(2) keys():返回字典內的所有key 可用for遍歷

print(dict1.keys())

返回 ["name","age","gender"]

for key in dict1.keys():

..print(key)

逐行輸出name age gender

——————————————————

(3) values(): 返回字典內的值 可用for遍歷

print(dict1.values())

返回["小明",18,"男"]

for value dict1.values():

..print(value)

逐行輸出小明 18 男

——————————————————

(4) items():將字典內的數據以元組的形式返回

print(dict1.items()) 可用for遍歷

返回[("name","小明"),("age",18),("gender","男")]

for item in dict1.items():

..print(item)

逐行輸出 ("name","小明") ("age",18)("gender","男")

——————————————————

遍歷字典鍵值對(拆包) 可在for內使用兩個臨時變數

dict1={"name":"小明","age":18,"gender:男"}

for key,value in dict1.items():

..print(f"{key}=value")

逐行輸出:

name=小明 age=18 gender=男

④ python字典,如何查找值中包含指定字元串的鍵

1、說明python中檢測字典的鍵中是否含有某串字元,便利字典鍵值,再判斷字元串是否在鍵值中即可。2、示例代碼:# 定義一個字典dic = {'1984/1/2': 123, '1984/1/3': 0, '1985/1/1': 156}# 遍歷字典鍵中是否包含1984for key in dic: if '1984' in key: print('鍵值中包含字元串"1984"') # 或者需要的其它操作 else: print('鍵值中不包含字元串"1984"')3、執行結果:鍵值中包含字元串"1984"鍵值中不包含字元串"1984"鍵值中包含字元串"1984"

4、其它說明:python使用for in直接操作字典就是遍歷字典的鍵值,python使用in操作來判斷字元串中是否包含子串最方便,要優於使用字元串的函數index或者find。

index函數在找不到子串時會報錯,find函數會返回-1。

⑤ Python中字典的內建函數用法是什麼

字典內置函數&方法
Python字典包含了以下內置函數:
1 cmp(dict1, dict2)
比較兩個字典元素。
2 len(dict)
計算字典元素個數,即鍵的總數。
3 str(dict)
輸出字典可列印的字元串表示。
4 type(variable)
返回輸入的變數類型,如果變數是字典就返回字典類型。

⑥ python-字典

1、字典:

      兩大特點:無序,鍵唯一

      無序存儲,鍵值對的形式存儲數據

  鍵是唯一不可修改的,不能用列表做鍵

2、python中不可變類型:整形,字元串,元組

    可變類型:字典,列表

3、字典中方法:

增加:

dic1 = {'name':'alex'}

dic1 = ['age'] =18

*dic1 = {'age':18,'name':'alex'}

      dic1.setdefault() 鍵存在,不改動,返回字典相應鍵對應的值,鍵不存在,在字典中增加新的鍵值對,並返回相應的值

查找:

        通過鍵查找

          dic1.keys()列印字典中所有鍵 

  #dict1.keys['name','age']  --轉換成列表:list(dic1.keys())

          dic1.values()列印字典中所有值

          dic1.items()列印所有鍵值對

修改:

          直接賦值

dic3= {'name':'alex','age':18}

dic4 = {'sex':'male','age':36}

          dic3.update(dic4)    #有相同的key,值會修改

刪除:

          dic.clear()    #清空字典

          del dic['name'] #刪除字典中指定鍵值對

          dic.pop('age')#刪除字典中指定鍵值對,並返回該鍵值對的值

          dic.popitem()  #隨機刪除鍵值對,並以元組方式返回

其他操作涉及的方法:

dic1 =dict.formkeys(['host1','host2'],'test')#{'host1':'test','host2':'test'}

dic1 =dict.formkeys(['host1','host2','host3'],['test1','test2'])#{'host1':['test1','test2'],'host2':['test1','test2'],'host3':['test1','test2']}

dic1['host2'][1] = 'test3'   #{'host3':['test1''test3'],'host2':['test1''test3'],'host1':['test1''test3']}

      字典的嵌套:

      字典的排序:

      字典的遍歷:

字元串的操作

a = '123'

b= 'abc'

c = a+b #123abc

c='****'.join([a,b])#123****abc

st = 'hello kitty{name} is {age}'

    st.count('l')    #2    統計元素個數

      st.captialize() #Hello kitty 首字母大寫

      st.center(50,'-')#--------hello kitty --------居中

      st.endswith('tty3')#判斷是否以某個內容結尾

      st.startswith('he')#判斷是否以某個內容開頭

      st.find('t') #8  查找第一個元素,並返回索引,不存在是返回-1

      st.format(name  = 'alex',age= 37)#hello kitty alex is 37

      st.format_map({'name' :'alex','age':27})#hello kitty alex is 27

      st.index('t') #8 返回索引,找不到報錯

『ab'.isalnum()

'123'.isdigit()

⑦ python內置數據類型列表list和字典dict的性能

    我們來討論下python的兩種最重要的內置數據類型列表list和字典dict上,各種操作的復雜度。

list列表數據類型常用操作性能:

1、按索引取值和賦值(v=a[i],a[i]=v)

由於列表的隨機訪問特性,這兩個操作執行時間與列表大小無關,均為O(1)

2、列表的曾長,可以選擇append()和_add_() "+"

list.append(v)的執行時間O(1)

list = list + [v],執行時間是O(n+k),因為新增了一個新的列表,其中k是被加的列表長度

舉例:4種生成前n個整數列表的方法

如圖:

我們可以計算一下這四個函數的耗時,如下

執行結果:

我們可以看到,4種方法運行時間差別很大,test1使用列表連接最慢,而test4使用list range最快,速度相差近200倍。

    如下圖,我們總結下list基本操作的性能如何:

上圖可知pop()從列表末尾移除元素O(1),但是pop(i)從列表中間移除元素要O(n),為什麼呢?

因為從中部移除元素,要把移除元素後面的元素全部向前挪一位,才保證了列表按索引取值和賦值很快,達到O(1)。

dict數據類型:

    字典和列表不同,dict根據key找到value,而list根據index。

    字典最常用的取值get和賦值set,其性能為O(1),而contain(in)操作判斷字典是否存在某個key,其性能也是O(1)

list和dict的in操作對比:

    設計一個性能試驗,驗證list中檢索一個值,對比dict中檢索一個值的耗時對比。如下程序:

如果如下:

可見list的in操作復雜度為O(n)

PS:大家可以去python官方的演算法復雜度網站看看:

https://wiki.python.org/moin/TimeComplexity

閱讀全文

與python字典index相關的資料

熱點內容
有伺服器地址怎麼安裝軟體 瀏覽:659
安卓如何完全清除數據 瀏覽:690
安卓安卓證書怎麼信任 瀏覽:53
伺服器被攻擊如何解決 瀏覽:221
學霸變成程序員 瀏覽:881
c語言編譯錯誤fatalerror 瀏覽:441
ipv4內部伺服器地址怎麼分配 瀏覽:463
java線程安全的方法 瀏覽:950
重復命令畫梯形 瀏覽:164
在疫情就是命令 瀏覽:328
自己搭建一個什麼伺服器好玩 瀏覽:253
java基礎馬士兵 瀏覽:823
完美世界手游如何查看伺服器 瀏覽:859
光遇安卓與ios什麼時候互通 瀏覽:598
js如何運行時編譯 瀏覽:917
引力app在哪裡下載 瀏覽:609
編寫app如何得到錢 瀏覽:801
吉利汽車軟體放哪個文件夾安裝 瀏覽:223
多文件編譯c 瀏覽:543
頭頂加密後為什麼反而更稀疏 瀏覽:794