麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > Python > 正文

Python中format_map()函數的使用方法

2023-04-25 12:32:02
字體:
來源:轉載
供稿:網友

Python中format_map(mapping)函數的作用與str.format(**mapping)類似,不過,format_map()函數中的mapping可以直接使用詞典,而不必再加“**”來解析詞典,在"{}"占位符中可以直接使用鍵名稱,不必使用詞典的變量來訪問。

Python中的format_map()函數是在3.2版中新增的函數,讀者在使用該函數時要注意所使用的Python版本。

關于Python中format()函數的使用方法,讀者可以參見以下三篇文章:

(1)Python中使用format()函數格式化字符串

(2)Python中使用format()函數對數字進行格式化

(3)Python中format()函數中的對齊與寬度問題

Python中的format_map()函數

format_map()函數的語法格式

str.format_map(mapping)

str是包含占位符"{}"字符串對象,mapping是一個詞典對象。

該函數執行完后,將會返回一個新字符串,新字符串中把str中所有的keys(鍵)用其對應的value(值)來替換。

format_map()函數的基本使用方法

下面建立一個詞典,并用詞典作為format_map()函數的參數,來觀察該函數的具體使用方法:

dict1 = {"site_name":"武林網VEVB","site_url":"VeVb.com",
         "subscription":"優雅的代碼"}
str_source = "{site_name}的網址是:{site_url},公眾號是:{subscription}"
str_result = str_source.format_map(dict1)
print(str_result)

輸出結果:

武林網VEVB的網址是:VeVb.com,公眾號是:優雅的代碼

在Python 3.8.2中的輸出形式截圖如下:

Python中format_map()函數使用案例

詞典中的項比格式化串多的情況

如果詞典中提供的鍵值對比實際需要的多會是是什么情況呢,下面通過一個例子來說明這種情況:

dict2 = {"lang1":"Java","lang2":"C#","lang3":"Python"}
print("我當前在學{lang2}和{lang3}".format_map(dict2))

輸出結果如下:

我當前在學C#和Python

從實際情況看,詞典中的鍵值對多于使用情況并不影響實際的輸出,也不會產生任何異常,其在詞典中搜索鍵名并把對應的值替換鍵名處的值即可,不會產生任何問題。

詞典中未包含格式化中的鍵

如果詞典中未包含使用的鍵會怎么樣呢?下面這個例子將告訴你這種情況下的輸出信息:

dict3 = {"lang1":"Java","lang2":"C#","lang3":"Python"}
print("我喜歡{lang4}".format_map(dict3))

輸出結果如下:

Traceback (most recent call last):
   File "D:/PY/format_map.py", line 2, in <module>
      print("我喜歡{lang4}".format_map(dict3))
KeyError: 'lang4'

從輸出結果可以看出,程序產生 KeyError 異常,即詞典dict3中并不包含鍵"lang4"。

也就是說,在正常情況下,詞典中若未定義某個鍵,而在格式字符串中使用了將會引發程序異常。

為了較好地解決上面這個問題,可以定義一個類和__missing__函數來處理:

class DealMissingValue(dict):
    def __missing__(self, key):
        return None

dict4 ={"lang1":"Java","lang2":"C#","lang3":"Python"}
print("我喜歡{lang4}".format_map(DealMissingValue(dict4)))

輸出結果

我喜歡None

可以看出,在使用__missing__函數處理后,可以在未找到對應的鍵值時,按照函數的返回值,將以None來替代。

總結

在使用詞典作為映射關系來格式化字符串時,format_map函數是非常有用的,它不像format()函數那樣建立詞典的副本來進行操作,從某種程度上來講,在使用詞典作為參數時,其效率要比format()函數高。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 成人片免费视频 | 福利免费在线观看 | 国产人成精品综合欧美成人 | 欧美成人综合视频 | 成年免费视频黄网站在线观看 | 热99在线 | 亚洲成人福利在线观看 | 久久久久久久亚洲精品 | 一区在线视频 | 中文字幕专区高清在线观看 | 逼片视频 | 羞羞网站在线观看入口免费 | 色av成人天堂桃色av | 成人视屏在线观看 | 午夜视| 成人毛片网 | 成人福利在线播放 | 久久网站热最新地址 | 欧美成人一二三区 | 最新在线中文字幕 | 色视频在线观看 | 韩国三级日本三级香港三级黄 | 欧美成人二区 | 成人午夜高清 | 国产羞羞网站 | 日韩视频在线免费 | 欧美wwwwww| 欧美三日本三级少妇三级99观看视频 | 午夜视频你懂的 | 欧美精品成人一区二区在线观看 | 毛片福利 | 性插视频 | 欧美zoofilia杂交videos | 羞羞视频免费网站日本动漫 | 亚洲福利在线视频 | 亚洲欧美不卡视频 | av免费在线观看不卡 | 国产午夜免费视频 | 免费在线看a | 国产91精品一区二区麻豆亚洲 | 97中文字幕第一一一页 |