官术网_书友最值得收藏!

3.2.7 字典提取

在字典的實際應(yīng)用中,有時為滿足某些需求,我們需要將一個字典中滿足某些條件的子集構(gòu)造成一個新的字典。

實現(xiàn)該操作最簡單的方式是使用字典推導(dǎo),示例如下:


score_dict = {
    'math': 95.0,
    'java': 90.5,
    'python': 100.0,
    'sql': 93.0,
    'english': 75.5
}

# Make a dictionary of all score over 92
p1 = {key: value for key, value in score_dict.items() if value > 92}
print(p1)
# Make a dictionary of tech skill
tech_names = {'python', 'sql', 'java'}
p2 = {key: value for key, value in score_dict.items() if key in tech_names}
print(p2)

對于大多數(shù)字典提取的情況,字典推導(dǎo)是能做到的。除此之外,我們還可以通過創(chuàng)建一個元組序列,然后把它傳給dict()函數(shù)來實現(xiàn),示例如下:


p1 = dict((key, value) for key, value in score_dict.items() if value > 92)

由代碼示例看到,字典推導(dǎo)方式表意更清晰,并且運行更快(在這個例子中,實際測試幾乎比dict()函數(shù)方式快整整一倍)。

有時候完成同一件事有多種方式。比如,第二個例子程序也可以重寫,代碼如下:


# Make a dictionary of tech skill
tech_names = {'python', 'sql', 'java'}
p2 = {key:score_dict[key] for key in score_dict.keys() & tech_names}

不過,運行時間大概比字典推導(dǎo)方式慢。如果對程序運行性能要求比較高,我們需要花點時間去做性能測試。

主站蜘蛛池模板: 兴仁县| 信阳市| 高雄县| 沛县| 密云县| 商河县| 宁河县| 偏关县| 鹤峰县| 全椒县| 江北区| 烟台市| 夏津县| 景洪市| 苏尼特右旗| 铜川市| 昭平县| 太和县| 丽水市| 柯坪县| 克东县| 迁安市| 昆明市| 澎湖县| 安吉县| 手游| 龙井市| 宾阳县| 临洮县| 彰化市| 启东市| 佛学| 库尔勒市| 东乡| 阜阳市| 雷州市| 淮滨县| 巴马| 全椒县| 寻甸| 南通市|