字典列表分組

2021-08-20 13:24:25 字數 1441 閱讀 2200

你有乙個字典或者例項的序列,然後你想根據某個特定的字段比如 date 來分組迭代訪問。

itertools.groupby()函式對於這樣的資料分組操作非常實用。 為了演示,假設你已經有了下列的字典列表:

rows=[,,

,,,,

,,

]

現在假設你想在按date分組後的資料塊上進行迭代。為了這樣做,你首先需要按照指定的字段(這裡就是date)排序, 然後呼叫itertools.groupby()函式:

from operator import itemgetter

from itertools import groupby

# sort by the desired field first

rows.sort(key=itemgetter('date'))

# iterate in groups

fordate, items

in groupby(rows, key=itemgetter('date')):

print(date)

for i in

items:

print(' ', i)

執行結果:

07/01/2012

07/02/2012

07/03/2012

07/04/2012

groupby()函式掃瞄整個序列並且查詢連續相同值(或者根據指定 key 函式返回值相同)的元素序列。 在每次迭代的時候,它會返回乙個值和乙個迭代器物件, 這個迭代器物件可以生成元素值全部等於上面那個值的組中所有物件。

乙個非常重要的準備步驟是要根據指定的字段將資料排序。 因為groupby()僅僅檢查連續的元素,如果事先並沒有排序完成的話,分組函式將得不到想要的結果。

如果你僅僅只是想根據 date 欄位將資料分組到乙個大的資料結構中去,並且允許隨機訪問, 那麼你最好使用defaultdict()來構建乙個多值字典。比如:

from collections import defaultdict

rows_by_date = defaultdict(list)

for row in rows:

這樣的話你可以很輕鬆的就能對每個指定日期訪問對應的記錄:

>>> for r in rows_by_date['07/01/2012']:

... print(r)

...>>>

在上面這個例子中,我們沒有必要先將記錄排序。因此,如果對記憶體占用不是很關心, 這種方式會比先排序然後再通過groupby()函式迭代的方式執行得快一些。

react native 分組列表

引用官網 如果你的列表不需要分組 section 那麼可以使用結構更簡單的 import react,from react import from react native import dimensions from dimensions const dimensions.get window l...

python 字典 列表

dictionary 字典,是除列表以外,python中最靈活的資料型別。字典可以儲存多個資料,儲存相關的資訊 dict 字典使用鍵值對儲存資料,鍵值對鍵名和鍵值 鍵名 key 就是鍵索引 鍵值 value 是資料 鍵名和鍵值之間用 值可以是任何型別,鍵名只能是字串 數字,元組 列表是有序的集合 下...

列表 元組 字典

列表 列表的定義 1 list 列表 是 python 中使用 最頻繁 的資料型別,在其他語言中通常叫做 陣列 2 專門用於儲存 一串 資訊 3 列表用 定義,資料 之間使用 分隔 4 列表的 索引 從 0 開始 5 索引 就是資料在 列表 中的位置編號,索引 又可以被稱為 下標 6 注意 從列表中...