Ⅰ python 字典的問題
題主你好,
寫在前面: 我先給題主舉個例子, 我先定義一個字典:
dict03 = {1:3, 5:7}
可以看出上面這個字典有兩個元素, 此時我們使用dict03.values()得到的結果為:
dict_values([3,7])
從上面這個結果可以看出, 字典的values方法,會將字典中的所有鍵值對的值生成一個列表, 作為dict_values()參數,並返回.
-----
上面沒有講到重點,只是作了一個引, 下面看到底問題出在哪了.
題主定義的dict03={0:[1,3,5,7]}, 這個字典, 其實只有一個鍵值對, 鍵是整數0,值是列表[1,3,5,7], 所以此時dict03.value()返回的值為 dict_values([[1,3,5,7]]), 重點就在這里, 注意,返回的是:
dict_values( [[ 1,3,5,7 ]] )
而不是
dict_values( [ 1,3,5,7 ] )
拋開前面這個dict_values, 也就是返回的是:
[[1,3,5,7]] 而不是 [1,3,5,7]
前者是含有一個元素的列表, 只不過這個元素本身也是一個列表;
後者是含有4個元素的列表, 每個元素都是整型數字;
而 x in y 這種形式中, 是看x是否存在於y中,
拿題主的代碼來說, 其實 i in dict03.values() 翻譯過來是:
5 in [[1,3,5,7]], 因為[[1,3,5,7]]這個列表就一個元素,為[1,3,5,7],所以5並不在[[1,3,5,7]]中,
如果翻譯過來是:
5 in [1,3,5,7],那麼我們得到的結果肯定是True, 因為[1,3,5,7]中有4個元素,而5恰在其中.
所以解決方法也就有了, 想辦法去掉[[1,3,5,7]]最外層的[].
代碼及測試截圖如下:
上圖中, 第一個紅框是將dict_values([[1,3,5,7]])轉換成 [[1,3,5,7]];
第二個紅框是將[[1,3,5,7]]轉換成[1,3,5,7];
此時最後一句print(5 in [1,3,5,7]) 也就得到了我們想要的結果True了.
-----
希望可以幫到題主, 歡迎追問.
Ⅱ python裡面的字典有什麼用
字典是另一種可變容器模型,可存儲任意類型對象。
字典的每個鍵值 key-value 對用冒號 : 分割,每個鍵值對之間用逗號 , 分割,整個字典包括在花括弧 {} 中 ,格式如下所示:
d = {key1 : value1, key2 : value2 }
鍵一般是唯一的,必須是不可變的,如字元串,數字或元組。值不需要唯一,可以取任何數據類型。
在需要使用hash時,就需要用到字典。
比如在統計字元個數時,可以使用字典。
d = {}
for char in strs:
d[char] = d.get(char, 0) + 1
Ⅲ Python中字典與列表的區別
字典:你知道一個key可以找到一個對應的value,通常你知道key是什麼,像查字典一樣,方向明確
列表:包含各種value,具體有些什麼值不知道,通常需要遍歷來取值。
Ⅳ Python 字典解析 代碼問題
return [k for k,v in d.items() if v == value]的意思等同於:
k_list=[]
fork,vind.items():
ifv==value:
k_list.push(k)
returnk_list
只不過k_list採用的匿名聲明
Ⅳ python字典的特點和用處
字典的特點:
字典的每個健值的展現方式是:key:value用冒號分割;鍵值之間為逗號分割;整個字典用大括弧{}將鍵值括起來;
鍵值可以是任意類型的對象;
鍵必須是唯一的;
鍵是不可變的;
字典的作用:
字典(日常生活中的字典和Python字典)旨在讓你能夠輕松地找到特定的單詞(鍵),以獲悉其定義(值)。
在很多情況下,使用字典都比使用列表更合適。下面是Python字典的一些用途:
表示棋盤的狀態,其中每個鍵都是由坐標組成的元組;
存儲文件修改時間,其中的鍵為文件名;
數字電話/地址簿。
Ⅵ python中字典的使用方法怎麼樣的
字典理解如下
另一個非常有用的 Python 內建數據類型是 字典 (參見 Mapping Types — dict )。字典在某些語言中可能稱為 聯合內存 ( associative memories )或 聯合數組 ( associative arrays )。序列是以連續的整數為索引,與此不同的是,字典以 關鍵字 為索引,關鍵字可以是任意不可變類型,通常用字元串或數值。如果元組中只包含字元串和數字,它可以作為關鍵字,如果它直接或間接的包含了可變對象,就不能當作關鍵字。不能用列表做關鍵字,因為列表可以用索引、切割或者 append() 和 extend() 等方法改變。
理解字典的最佳方式是把它看作無序的鍵: 值對 (key:value 對)集合,鍵必須是互不相同的(在同一個字典之內)。一對大括弧創建一個空的字典: {} 。初始化列表時,在大括弧內放置一組逗號分隔的鍵:值對,這也是字典輸出的方式。
字典的主要操作是依據鍵來存儲和析取值。也可以用 del 來刪除鍵:值對(key:value)。如果你用一個已經存在的關鍵字存儲值,以前為該關鍵字分配的值就會被遺忘。試圖從一個不存在的鍵中取值會導致錯誤。
對一個字典執行 list(d.keys()) 將返回一個字典中所有關鍵字組成的無序列表(如果你想要排序,只需使用 sorted(d.keys()) )。[2] 使用 in 關鍵字(指Python語法)可以檢查字典中是否存在某個關鍵字(指字典)。
Ⅶ python3 如何解析多層嵌套字典,具體內容打開看
# 見 代碼 ,代碼粘貼上不帶格式,按照圖片用tab鍵調整一下,圖片是核心部分
simple_dict={
'Large_dict':{'middle_dict1':{'small_dict1':1,
'small_dict2':2},
'middle_dict2':{'small_dict3':3,
'small_dict4':4,
'small_dict5':{'small_dict10':1,
'small_dict22':3},
},
}
}
#需求分析:從嵌套字典中,找到值為3的路徑關系
#簡化模型:從value為3的值遞歸向上層的key,遞歸過程保存當前已經遞歸的路徑和當前層
#1.找到字典一共有多少層:
count=0
path=''#設置路徑的全局變數
result=[]#記錄結論
defget_count(dict_test):
globalcount#聲明每次遞歸均是改變全局變數
globalpath#拼接檔期啊你的路徑
globalresult#記錄結果
foriindict_test:
iftype(dict_test[i]).__name__=='dict':
#如果是字典,則繼續向下展開,即執行遞歸:
ifcount==0:#增加判斷消除第一個<-出現,邏輯問題
path=path+i
else:
path=path+'<-'+i
count+=1#記錄層數
get_count(dict_test[i])
else:
try:
#如果不是字典則是鍵值對,查詢value值是不是3,當前i包含兩個內容,一個是key,一個是value
ifdict_test[i]==3:
#找到了value=3的值
result.append(f"路徑是:%s,在第%d層"%(path+'<-'+i,count))
exceptExceptionasresult:#雖然字典限定了寫法,為了增加健壯性此位置使用try指令,避免類型錯誤
print(result)
continue
if__name__=='__main__':
get_count(simple_dict)#執行遞歸函數
[print(str(i+1)+':'+j)fori,jinenumerate(result)]#列印結果
'''
結果:
1:路徑是:Large_dict<-middle_dict1<-middle_dict2<-small_dict3,在第3層
2:路徑是:Large_dict<-middle_dict1<-middle_dict2<-small_dict5<-small_dict22,在第4層
'''
Ⅷ 關於python中字典
extension[ext]+=1 等同於extension[ext] = extension[ext]+1
a=a+1 ; ++a ; a++ ; a+=1; 這四個語句通常是可以通用的,a=a+1簡寫為a+=1;也是經常遇到的
Ⅸ python中字典常用的方法有哪些,分別有什麼作用
寫法:字典序列[key] = 值 ***字典為可變類型
常用方法:
1、# 新增字典中的數據
dict1 = {'name':'huu','age':20,'gender':'男'}
dict1['id'] = 133
print(dict1)
2、# 修改字典中的數據
dict1['name'] = 'xiauaiguai'
print(dict1)
3、刪除字典或刪除字典中指定鍵值對
del()/del:
dict1 = {'name':'huanghu','age':30,'gender':'男'}
# del(dict1) 直接將字典刪除了,運行報錯
del dict1['name']
print(dict1)
# del dict1[names] 刪除不存在的key,運行報錯
4、清空字典
clear():
dict1.clear() # 清空字典
print(dict1)
5、查找
key值查找
如果當前查找的key存在則返回對應的值,否則則報錯
函數查找
get():如果當前查找的key不存在則返回第二個參數值(默認值),
如果省略第二個參數則返回 None
key()
dict1 = {'name':'huhu','age':20,'gender':'男'}
print(dict1['name']) # huhu
print(dict1['id']) # 報錯
# 1, get()查找
print(dict1.get('name')) # huanghu
print(dict1.get('id',133)) # 133--如果當前查找的key不存在則返回第二個參數值(默認值)
print(dict1.get('id')) # None--如果省略第二個參數則返回 None
# 2, keys() 查找字典中所有的key,返回可迭代對象
print(dict1.keys()) # dict_keys(['name', 'age', 'gender'])
# 3,values() 查找字典中所有的values,
print(dict1.values()) # dict_values(['huanghu', 30, '男'])
# 4, items() 查找字典中所有的鍵值對,返回可迭代對象,裡面的數據是元組,
元組數據1是字典中的key,元組數據2是字典key對應的值
print(dict1.items()) # dict_items([('name', 'huahu'), ('age', 20), ('gender', '男')])
Ⅹ python為什麼使用字典解析會出現值一樣的結果
這是一個嵌套循環,由於dict不允許重復,最終每個key對應的value的值都是內層循環oldlist最後一項的值即3。要實現key和value一一對應的關系最好的方法是使用zip()函數:
i = dict(zip(thelist,oldlist))