python中namedtuple與OrderedDict 的使用

2021-01-07 Python之家

今天來講解一下python中的 Namedtuple與OrderedDict 的使用。

一、Namedtuple

我們都知道,在python的數據結構裡,tuple(元組)表示的是不可變集合。比如,一個點的二維坐標可以表示為:

p = (1, 2)

但是,當看到(1,2)的時候,我們很難看得出這個tuple是用來表示一個坐標的。那麼,nametuple就派上了用場:

from collections import namedtuplePoint = namedtuple('Point', ['x', 'y'])p = Point(1, 2)p.xp.y

如果用坐標和半徑表示一個圓,也可以用nametuple來定義:

#namedtuple('名稱', [屬性list]):Circle = namedtuple('Circle', ['x', 'y', 'r'])

Namedtuple,可以讓我們不必通過索引值進行訪問,我們可以把它看作為一個字典通過名字進行訪問,只不過其中的值時不能改變的。它比普通的tuple具有更好的可讀性,使代碼更容易維護。與字典相比,有更加輕量高效。

最後,它還有一個非常好的一點是與tuple是完全兼容。也就是說,我們依然可以用索引去訪問一個namedtuple。

二、OrderedDict

OrderedDict,看字知意,有序字典。

我們學習python,接觸到的字典的概念,字典是無序的,因為它是按照hash來存儲。但是python中有個模塊collections(英文,收集、集合),裡面自帶了一個子類OrderedDict,實現了對字典對象中元素的排序。

上代碼:

輸出:

我們可以看到,同樣是保存了ABC等幾個元素,但是使用OrderedDict會根據放入元素的先後順序進行排序。所以輸出的值是排好序的。

相關焦點

  • Python中比元組更好用的namedtuple
    其他內置函數(all、any、max、min、list、tuple、enumerate、sorted等)◆ 最大的痛點是只能通過數字索引來取值◆ 當元組中元素非常大時,通過索引取值非常不方便,內存消耗也大使用命名元組的步驟:
  • 使用namedtuple的小例子
    今日分享namedtuple幹啥用from collections import namedtuplelst = [
  • 如何在python中引入高性能數據類型?
    在一般意義上,python 中的集合是用於存儲數據集合(如 list、dict、tuple 和 set)的容器。這些容器直接構建在 python 中,可以直接調用。collections 模塊提供額外的高性能數據類型,這些數據類型可以提高代碼的性能。讓我們瀏覽一下 collections 模塊最流行的數據類型以及如何使用它們吧!
  • Python的List與Tuple
    List(列表)List(列表) 是 Python 中使用最頻繁的數據類型。列表可以完成大多數集合類的數據結構實現。列表中元素的類型可以不相同,它支持數字,字符串甚至可以包含列表(所謂嵌套)。列表是寫在方括號([])之間、用逗號分隔開的元素列表。
  • Python最冷門的模塊
    collections提供了4個重要的數據類型,在實際開發中或多或少會接觸到,通過使用這些數據類型,可以讓你的代碼變得更優雅、更地道。今天先來介紹 namedtuple 這個類型namedtuplenamedtuple 是 元組(tuple)類型的子類,所以本質上它還是一個元組類型,繼承了元組所有的的特性,namedtuple 特別之處在於你可以通過名字來訪問元組中的元素
  • Python數據類型
    這裡要說下, Python中沒有接口這個概念, 類似於接口, Python使用的是一種協議, 只要實現的這個協議, 並不一定需要去繼承某個抽象類, 就可以判定實現了協議的對象是某個抽象類的子類.from collections import namedtuplePerson = namedtuple('Person
  • 四種高性能數據類型,Python collections助你優化代碼、簡潔任務
    defaultdict官方文檔:https://docs.python.org/2/library/collections.html#collections.defaultdictdefaultdict 的工作方式和平常的 python dictionary 完全相同,只是當你試圖訪問一個不存在的鍵時,它不會報錯,而是會使用默認值初始化這個鍵。
  • Python數據類型之元組tuple
    # 元組(tuple)是 Python 中另一個重要的序列結構,和列表類似,元組也是由一系列按特定順序排序的元素組成。
  • python3.6中數據類型之list和tuple的比較
    list使用中括號,有序,可修改其中的數值tuple使用小括號,有序,不可修改其中的數值我們分別定義一個list,一個tuple.python在這裡的門門道道還是比較多的。1:下標制比如上面定義的LIST.計算機裡面的標籤是這樣的list =[list[0],list[1],list[2],list[3]]或者list=[list[-4],list[-3],list[-2],list[-1]]比如我們需要完整輸出。
  • 如何在Python 3中使用collections模塊
    在本教程中,我們將通過collections模塊中的三個類來幫助你處理元組、字典和列表。我們將使用namedtuples來創建帶有命名欄位的元組,使用defaultdict來在字典中精確地分組信息,以及使用deque來高效地向一個類列表對象的每一邊添加元素。在本教程中,我們將主要處理一個魚類清單,當在虛構的水族箱中添加或刪除魚類時,我們需要修改這些清單。
  • 元組(tuple)-Python基本數據類型之四
    在python中,元組這種數據結構同列表類似,都可以描述一組數據的集合,它們都是容器,是一系列組合的對象,不同的地方在於,元組裡的元素是不能更改的,它們之間的差異性我們用一個例子來說明一下:列表:元組:>>> student=(1,"tom","2008-05-06",10,135.7)>>> print(student[1]) #輸出 tom從上面的比較例子可以看出,列表一般用於不確定個數的數據的集合中,
  • 【Python基礎】Python的元組,沒想像的那麼簡單
    Python的元組與列表類似,元組一旦創建,元組中的數據一旦確立就不能改變,不能對元組中中的元素進行增刪改操作,因此元組沒有增加元素append、更新元素update、彈出元素pop等相關方法,只有簡單的索引和計數的方法。
  • 11-python中的元組
    通過前兩天的文章10-python中的字典我們學習了有關字典的知識,今天我們將學習一下python中的元組。(一)元組介紹    元組(),是python內置的數據結構之一,是一個不可變序列。('使用tuple():', t1, type(t1))t3 = ('python') t4 = ('python', )print('單個元素沒有,逗號:', t3, type(t3))print('單個元素有,逗號:', t4, type(t4))t5 = ()t6 = tuple()print('空元祖創建:', t5)print('空元祖創建:', t6)
  • 一文看懂Python collections模塊的高效數據類型
    一般來講,python的collections是用於存儲數據集合(比如列表list, 字典dict, 元組tuple和集合set)的容器。這些容器內置在Python中,可以直接使用。namedtuple在Python中創建常規元組時,其元素是通用的且未命名,這迫使您記住每個元組元素的確切索引。可以使用具名元組namedtuple來解決這個問題。
  • 2.1 Python基礎知識(List和Tuple)
    一、List類型1.python創建List說明:Python內置的一種數據類型是列表:list。list是一種有序的集合,可以隨時添加和刪除其中的元素。構造list非常簡單,按照上面的代碼,直接用 [ ] 把list的所有元素都括起來,就是一個list對象。由於Python是動態語言,所以list中包含的元素並不要求都必須是同一種數據類型。
  • python進階,詳解collections工具庫!
    defaultdictdefaultdict可以說是這個庫當中使用最簡單的一個,並且它的定義也很簡單,我們從名稱基本上就能看得出來。它解決的是我們使用dict當中最常見的問題,就是key為空的情況。在正常情況下,我們在dict中獲取元素的時候,都需要考慮key為空的情況。如果不考慮這點,那麼當我們獲取了一個不存在的key,會導致系統拋出異常。
  • 數據類型介紹——tuple、list和range對象
    )(1)定義元組元組使用圓括號「()」與逗號「,」來創建,同樣可以包含任意數據類型,其定義方法主要有以下幾種:In [15]: 1,'python',2.3In [16]: tuple_1Out[16]: (1, 'python', 2.3)也可以由括號直接定義:
  • Python數據類型串講(中)
    #正序提取x[8]#逆序提取x[-4]以上代碼執行結果為:切片(sliceing)使用索引提取序列元素不需要新創建變量,非常方便,但使用索引每次只能提取字符串中的單個字符,而實際運用中往往需要一次提取多個字符,這時便可以使用序列的另一特性:切片。
  • Python入門14-元組tuple
    元組沒有append()、insert()這樣的方法,可以連接(用+)或刪除整個元組(用del) 元組用小括號,列表用中括號。classmates=('Michael','Bob','Tracy',"小明","小華","三毛")#元組 元組中的元素類型也可以不相同。
  • Python中的函數定義與參數使用
    本節知識點:(1)函數定義格式;(2)五種參數使用函數定義 基本語法格式def function_name(  parameter_list  ):              return values函數通常為小寫英語單詞及其組合