日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

python 字典操作方法详解

發布時間:2024/5/24 综合教程 25 生活家
生活随笔 收集整理的這篇文章主要介紹了 python 字典操作方法详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  字典是一種通過名字或者關鍵字引用的得數據結構,key 類型需要時被哈希,其鍵可以是數字、字符串、元組,這種結構類型也稱之為映射。字典類型是Python中唯一內建的映射類型。

  注意,浮點數比較很不精確,因此千萬不要用浮點數作為key!

python字典包含了11個內置方法,具體如下:

序號 函數 描述
1 clear(self) 刪除字典內所有的元素
2 copy(self) 返回一個字典的淺copy,俗稱賦值
3 fromkeys(*args,**kwargs) 創建一個新字典,以序列seq中元素做字典的鍵,val為字典所有鍵對應的初始值
4 get(self,k,d=None) 返回指定鍵的值,如果值不在字典中返回default值
5 items(self) 以列表返回可遍歷的(鍵, 值) 元組數組
6 keys(self) 以列表返回一個字典所有的鍵
7 pop(self,k,d=None) 刪除字典給定鍵 key 所對應的值,返回值為被刪除的值。key值必須給出。 否則,返回default值
8 popitem(self) 隨機返回并刪除字典中的一對鍵和值
9 setdefault(self,k,d=None) 和get()類似, 但如果鍵不存在于字典中,將會添加鍵并將值設為default
10 update(self,E=None,**F) 把self的東西更新到外面字典
11 values(self) 以列表返回字典中的所有值

  具體舉例子解釋如下:

1,字典的鍵不能是list類型:

list = [1,2,3,4]
info2 = {list:'number'}

結果:
Traceback (most recent call last):
  File "D:/字典.py", line 2, in <module>
    info2 = {list:'number'}
TypeError: unhashable type: 'list'

2,list/set/dict 均不可被哈希  ,int、float、str、tuple:是可以哈希的

1 list.__hash__;
    #結果為None
2 set.__hash__; 
    #結果為None
3 dict.__hash__; 
    #結果為None
4 print(int.__hash__);
    # <slot wrapper '__hash__' of 'int' objects>
5 print(float.__hash__); 
    #<slot wrapper '__hash__' of 'float' objects>
6 print(str.__hash__);  
    #<slot wrapper '__hash__' of 'str' objects>
7 print(tuple.__hash__);
    #<slot wrapper '__hash__' of 'tuple' objects> 

3,增

info ={'name':'jamnes','age':'32','work':'basketplayer'}
info['sex'] = 'fale'
print(info)
結果:
{'name': 'jamnes', 'age': '32', 'work': 'basketplayer', 'sex': 'fale'}

4,刪

4-1 pop():刪除指定key的鍵值對

info ={'name':'jamnes','age':'32','work':'basketplayer'}
info.pop('work')
print(info)
結果:
{'name': 'jamnes', 'age': '32'}

4-2 clear():清除所有的鍵值對

info ={'name':'jamnes','age':'32','work':'basketplayer'}
info.clear()
print(info)
結果:
{}

4-3setdefault():刪除指定的元素,如果沒有,則返回none

info ={'name':'jamnes','age':'32','work':'basketplayer'}
info.setdefault('son')
print(info)
結果:
None

  

5,改

info ={'name':'jamnes','age':'32','work':'basketplayer'}
info['age']='33'
print(info)
結果:
{'name': 'jamnes', 'age': '33', 'work': 'basketplayer'}

6,查

6-1 get():通過給定的key,查找對應的value,如果給定的可以在字典中無,則返回None

info ={'name':'jamnes','age':'32','work':'basketplayer'}
a =info.get('age')
print(a)
結果:
32

6-2 setdefault():通過給定的key,查找對應的value,如果給定的可以在字典中無,則返回None,
同時在字典中增加'test': None鍵值對

info ={'name':'jamnes','age':'32','work':'basketplayer'}
a =info.setdefault('age')
print(a)
print(info)
b =info.setdefault('sex')
print(b)
print(info)

結果:
32
{'name': 'jamnes', 'age': '32', 'work': 'basketplayer'}
None
{'name': 'jamnes', 'age': '32', 'work': 'basketplayer', 'sex': None}

7,更新

7-1update()=

一,更新里面有的信息,就是改變
info ={'name':'jamnes','age':'32','work':'basketplayer'}
info2 = {'name':'wade','age':'33','work':'basketplayer'}
info.update(info2)
print(info)
結果:
{'name':'wade','age':'33','work':'basketplayer'}

二,更新里面沒有的信息,就是添加
info ={'name':'jamnes','age':'32','work':'basketplayer'}
info2 = {'honor':'3 champions'}
info.update(info2)
print(info)
結果:
{'name': 'jamnes', 'age': '32', 'work': 'basketplayer', 'honor': '3 champions'}

  

8,返回鍵,值,鍵值對

  keys():以列表(list)返回字典中的所有鍵(key),字典是無序的,所以這個list返回的不是定義字典的順序

  values():以列表(list)返回字典中的所有值,這個list的順序跟keys()返回的list順序是一一對應的

  items():以列表(list)返回可遍歷的(鍵, 值) 元組數組,這個tuple的list包含了dictionary的所有數據

dict ={'k1':'v1','k2':'v2','k3':'v3'}
#1,請循環遍歷除所有的key
for keys in dict.keys():
    print(keys)

#遍歷出所有的value
for value in dict.values():
    print(value)

#遍歷出
for key,value in dict.items():
    print(key+':'+value)
#結果:
k1
k2
k3
v1
v2
v3
k1:v1
k2:v2
k3:v3

9,練習字典

  dic={'k1':"v1","k2":"v2","k3":[11,22,33]}

  a.請循環輸出所有的key

  b.請循環輸出所有的value

  c.請循環輸出所有的key和value

  d.請在字典中添加一個鍵值對,"k4":"v4",輸出添加后的字典

  e.請在修改字典中“k1”對應的值為“alex”,輸出修改后的字典

  f.請在k3對應的值中追加一個元素44,輸出修改后的字典

  g.請在k3對應的值的第1個位置插入個元素18,輸出修改后的字典

dic={'k1':"v1","k2":"v2","k3":[11,22,33]}
#   a.請循環輸出所有的key
for i in dic :
    print(i)
for i in dic.keys():
    print(i)
#   b.請循環輸出所有的value
for i in dic.values():
    print(i)
  c.請循環輸出所有的key和value
for i,j in dic.items():
    print(i,j)
#   d.請在字典中添加一個鍵值對,"k4":"v4",輸出添加后的字典
dic2 = {'k4':'v4'}
dic.update(dic2)
print(dic)
dic['k4'] = 'v4'
print(dic)

#   e.請在修改字典中“k1”對應的值為“alex”,輸出修改后的字典
dic['k1'] ='alex'
print(dic)
  f.請在k3對應的值中追加一個元素44,輸出修改后的字典
dic['k3'].append(44)
print(dic)
#   g.請在k3對應的值的第1個位置插入個元素18,輸出修改后的字典
dic['k3'].insert(0,18)
print(dic)

10,根據字典的鍵值進行排序  

  反序: reverse = True

mylist = ['學習', '工作', '玩耍', '學習', '工作', '工作']
print(mylist)
# list_element 是另外一個列表,里面的內容是list_element里面的無重復項
myset = set(mylist)

mydict = {}

for item in myset:
    res = mylist.count(item)
    sample = {item: res}
    # print(res)
    # print("the %d has found %d" % (item, mylist.count(item)))
    mydict.update(sample)
print(mydict)
print(sorted(mydict.items(), key=lambda mydict:mydict[1],reverse=True))

  

11,OrderedDict 的使用

  在Python中,dict這個數據結構由于hash的特性,是無序的,這在有時候會給我們帶來一些麻煩,幸運的時,在collections模塊中為我們提供了 OrderedDict ,當你需要獲取一個有序的字典對象時,試用它即可。

  python中的字典(dict)對象可使用“鍵”,“值” 對的形式存取值,但默認的內置類型字典中的元素是無序的。Collections模塊下的OrderedDict類實現了對字典的排序,OrderedDict是dict的一個子類,實現了對字典排序的功能,下面看一下兩者數據類型的對比。

from collections import OrderedDict

print('Normal Dictionary:')
d = {}
d['name'] = 'v1'
d['age'] = 'v2'
d['job'] = 'v3'
d['address'] = 'v4'

d1 = {}
d1['job'] = 'v3'
d1['address'] = 'v4'
d1['name'] = 'v1'
d1['age'] = 'v2'

print(d)
print(d1)
print(d == d1)

print('OrderedDict:')
d2 = OrderedDict()
d2['name'] = 'v1'
d2['age'] = 'v2'
d2['job'] = 'v3'

d3 = OrderedDict()
d3['job'] = 'v3'
d3['age'] = 'v2'
d3['name'] = 'v1'

print(d2)
print(d3)
print(d2 == d3)

  輸出結果:

Normal Dictionary:
{'name': 'v1', 'age': 'v2', 'job': 'v3', 'address': 'v4'}
{'job': 'v3', 'address': 'v4', 'name': 'v1', 'age': 'v2'}
True
OrderedDict:
OrderedDict([('name', 'v1'), ('age', 'v2'), ('job', 'v3')])
OrderedDict([('job', 'v3'), ('age', 'v2'), ('name', 'v1')])

False

  從結果來看,如果是普通的字典,即使傳入的順序不一樣,但是依然是相同的字典;如果是OrderedDict ,傳入的順序不一樣,那么得到的字典是不一樣的。

集合操作方法詳解,請看下面博客:http://www.cnblogs.com/wj-1314/p/8423273.html

字符串操作方法詳解,請看下面博客:http://www.cnblogs.com/wj-1314/p/8419009.html

列表操作方法詳解,請看下面博客:http://www.cnblogs.com/wj-1314/p/8433116.html

總結

以上是生活随笔為你收集整理的python 字典操作方法详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。