python dict的get使用預設鍵值

2022-09-01 06:27:06 字數 1654 閱讀 8538

python的dict的get使用預設鍵值

1.以乙個例子說開

十六進製制轉為十進位制

輸入任意長度的十六進製制數,轉為十進位制數,該十六進製制一定以0x為開頭

如上,既然都以0x為開頭,則可以把頭兩位切片去掉

比如,0x1a12 ,切片去掉頭兩位是 1a12

轉為十進位制是 1*16^3 + 10 * 16^2 + 1 * 16^1 + 2 * 16^0

我們可以把切片去掉頭兩位後得到的字串逆序,得到 21a1,這樣迴圈處理,隨著位數的上公升,其對應的16n次方的n也不斷上公升,這樣處理比較自然

import math

while true:

hexdict =

try:

rawdata = raw_input()[2:]

sum = 0

if rawdata:

hexdata = rawdata.upper()[::-1]

length = len(hexdata)

for i in xrange(length):

if hexdata[i] >= '0' and hexdata[i] <= '9':

sum = sum + int(hexdata[i]) * math.pow(16,i)

elif hexdata[i] >= 'a' and hexdata[i] <= 'f':

sum = sum + int(hexdict.get(hexdata[i])) * math.pow(16,i)

print(int(sum))

except:

break

可以看到,針對十六進製制數中可能出現0-9和a-f分別進行了處理。

可以不可以少些幾行**,用統一的方式處理0-9和a-f呢?

這就需要字典的get方法使用預設鍵值

import math

while true:

hexdict =

try:

rawdata = raw_input()[2:]

sum = 0

if rawdata:

hexdata = rawdata.upper()[::-1]

length = len(hexdata)

for i in xrange(length):

sum = sum+int(hexdict.get(hexdata[i],hexdata[i]))*math.pow(16,i)

print(int(sum))

else:

break

except:

break

字典的get方法可以給字典設定預設鍵值,當指定的鍵獲取不到鍵值時,就使用引數指定的預設鍵值。

在這裡,當hexdata[i]在hexdict中有鍵值對應的時候,即這個數是a-f的時候,就可以取到a-f進行計算

當hexdata[i]在hexdict中沒有鍵值對應的時候,即這個數是0-9的時候,就是用0-9自身作為鍵值,進行計算

這樣,就不需要針對0-9和a-f分別進行處理(在測試不同的方法時間效能的時候,似乎第一種時間更少一些)

Python dict字典的使用

為記錄學習的過程 python中 雜湊值 hash 在字典dict中 每個鍵值對的key 儲存到 記憶體中都是以雜湊值 位址值key 的方式儲存的 每次獲取相同值的雜湊值都是相等的 這樣保證了一致性 假如重啟專案 則雜湊值會發生變化 如果是數字型別的雜湊值 hash 123455 數字在python...

python dict的注意事項

1.key不能用list和set 由於列表是易變的,故不可做key。如果使用會報錯 但是元組可以做key 2.遍歷方法 for key in somedict pass 速度快,但是如果要刪除元素會導致錯誤,出錯情況如下 這裡初始化乙個dict d 本意是遍歷dict,發現元素的值是0的話,就刪掉 ...

python dict字典的增刪改查

資料型別劃分 可變資料型別 不可變資料型別 不可更改資料型別 元祖,bool,str,int 可雜湊 可變資料型別 list dict,不可雜湊 dict key 必須是不可變資料型別 可雜湊增 dic1 dic1 height 185 沒有鍵值對,新增 dic1 age 16 有這個鍵就覆蓋 di...