What are “named tuples” in Python?

前端 未结 11 2200
名媛妹妹
名媛妹妹 2020-11-22 06:58

Reading the changes in Python 3.1, I found something... unexpected:

The sys.version_info tuple is now a named tuple:

11条回答
  •  自闭症患者
    2020-11-22 07:37

    What is namedtuple ?

    As the name suggests, namedtuple is a tuple with name. In standard tuple, we access the elements using the index, whereas namedtuple allows user to define name for elements. This is very handy especially processing csv (comma separated value) files and working with complex and large dataset, where the code becomes messy with the use of indices (not so pythonic).

    How to use them ?

    >>>from collections import namedtuple
    >>>saleRecord = namedtuple('saleRecord','shopId saleDate salesAmout totalCustomers')
    >>>
    >>>
    >>>#Assign values to a named tuple 
    >>>shop11=saleRecord(11,'2015-01-01',2300,150) 
    >>>shop12=saleRecord(shopId=22,saleDate="2015-01-01",saleAmout=1512,totalCustomers=125)
    

    Reading

    >>>#Reading as a namedtuple
    >>>print("Shop Id =",shop12.shopId)
    12
    >>>print("Sale Date=",shop12.saleDate)
    2015-01-01
    >>>print("Sales Amount =",shop12.salesAmount)
    1512
    >>>print("Total Customers =",shop12.totalCustomers)
    125
    

    Interesting Scenario in CSV Processing :

    from csv import reader
    from collections import namedtuple
    
    saleRecord = namedtuple('saleRecord','shopId saleDate totalSales totalCustomers')
    fileHandle = open("salesRecord.csv","r")
    csvFieldsList=csv.reader(fileHandle)
    for fieldsList in csvFieldsList:
        shopRec = saleRecord._make(fieldsList)
        overAllSales += shopRec.totalSales;
    
    print("Total Sales of The Retail Chain =",overAllSales)
    

提交回复
热议问题