當前位置:成語大全網 - 新華字典 - python 字典的問題?

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了.

-----

希望可以幫到題主, 歡迎追問.