python keyerror_python 日常笔记 - namedtuple
問題:
有一批食物,比如:蛋糕,豆腐,牛奶,白菜等等。這些食物都有自己的屬性,比如: 生產日期,重量,個數,產地這四個。那么用什么方式記錄這批食物呢? 或者說,我們如何在程序里對他們進行描述呢?
第一印象: 字典
優點:直接,快速,可拓展
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}如果有個特別的屬性,我們直接增加就可以了
milk['state'] = 'liquid'但是這個方式一些缺點,
就是每次調用的時候都要使用括號引用,而且由于key過于靈活,導致可能有些時候會出現key error (雖然可以用get 方法彌補)
這些東西我們本意是想歸為一類,但是這樣雖然可以描述信息,但是并沒有體現出來是一類東西, 比如我們定義一輛汽車。
比如:
image.png
改進, 類
優點: 調用方便, 只要用 . 就可以。
而且是一個對象,有對象的所有特點,可以統一在定義的地方增加方法,增加屬性。
image.png
缺點: 定義起來太麻煩, 而且拓展不好,
進一步改進: namedtuple
優點: 定義方便, 適合這類標記,具有一部分類的優點和字典的優點。可以拓展屬性,只要在定義時候拓展,后續就都會自動拓展。統一管理這一類物體的屬性
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)輸出結果同上
不同的情況需要選擇不同的數據結構,python 提供很過高級的數據結構,namedtuple 就是一個
ref:
https://docs.python.org/3.7/library/collections.html
https://www.geeksforgeeks.org/namedtuple-in-python/
總結
以上是生活随笔為你收集整理的python keyerror_python 日常笔记 - namedtuple的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 内存条频繁蓝屏?科赋保修速度惊人
- 下一篇: 内存条升级,电脑速度大爆发
