python keyerror_python 日常笔记 - namedtuple
問題:
有一批食物,比如:蛋糕,豆腐,牛奶,白菜等等。這些食物都有自己的屬性,比如: 生產(chǎn)日期,重量,個(gè)數(shù),產(chǎn)地這四個(gè)。那么用什么方式記錄這批食物呢? 或者說,我們?nèi)绾卧诔绦蚶飳?duì)他們進(jìn)行描述呢?
第一印象: 字典
優(yōu)點(diǎn):直接,快速,可拓展
cake = {"weight": 12, "product_date": "2019-06-15", "product_place": "Beijing", "cnt" : 10}toufu = {"weight": 7, "product_date": "2019-07-17", "product_place": "Beijing", "cnt" : 1}milk = {"weight": 10, "product_date": "2019-12-05", "product_place": "Beijing", "cnt" : 12}cabbage = {"weight": 25, "product_date": "2019-09-25", "product_place": "Beijing", "cnt" : 1}如果有個(gè)特別的屬性,我們直接增加就可以了
milk['state'] = 'liquid'但是這個(gè)方式一些缺點(diǎn),
就是每次調(diào)用的時(shí)候都要使用括號(hào)引用,而且由于key過于靈活,導(dǎo)致可能有些時(shí)候會(huì)出現(xiàn)key error (雖然可以用get 方法彌補(bǔ))
這些東西我們本意是想歸為一類,但是這樣雖然可以描述信息,但是并沒有體現(xiàn)出來是一類東西, 比如我們定義一輛汽車。
比如:
image.png
改進(jìn), 類
優(yōu)點(diǎn): 調(diào)用方便, 只要用 . 就可以。
而且是一個(gè)對(duì)象,有對(duì)象的所有特點(diǎn),可以統(tǒng)一在定義的地方增加方法,增加屬性。
image.png
缺點(diǎn): 定義起來太麻煩, 而且拓展不好,
進(jìn)一步改進(jìn): namedtuple
優(yōu)點(diǎn): 定義方便, 適合這類標(biāo)記,具有一部分類的優(yōu)點(diǎn)和字典的優(yōu)點(diǎn)。可以拓展屬性,只要在定義時(shí)候拓展,后續(xù)就都會(huì)自動(dòng)拓展。統(tǒng)一管理這一類物體的屬性
import collectionsFood = collections.namedtuple('Food', 'weight product_date product_place cnt')cake = Food(weight=12, product_date="2019-06-05", product_place='Beijing', cnt =10)toufu = Food(weight=7, product_date="2019-07-17", product_place='Beijing', cnt =1)milk = Food(weight=10, product_date="2019-12-05", product_place='Beijing', cnt =12)cabbage = Food(weight=25, product_date="2019-09-25", product_place='Beijing', cnt =1)print(cake.weight)print(milk.product_date)輸出結(jié)果同上
不同的情況需要選擇不同的數(shù)據(jù)結(jié)構(gòu),python 提供很過高級(jí)的數(shù)據(jù)結(jié)構(gòu),namedtuple 就是一個(gè)
ref:
https://docs.python.org/3.7/library/collections.html
https://www.geeksforgeeks.org/namedtuple-in-python/
總結(jié)
以上是生活随笔為你收集整理的python keyerror_python 日常笔记 - namedtuple的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 内存条频繁蓝屏?科赋保修速度惊人
- 下一篇: 内存条升级,电脑速度大爆发