一、按某個字段分組
在Python語言中,使用groupby()函數可以將list按照某個字段進行分組。首先,我們需要對list按照指定字段進行排序。然後,使用groupby()函數對排序後的list進行分組。下面是實現的代碼示例:
from itertools import groupby
# 對list進行排序
lst = [{'name': 'Alice', 'age': 25}, {'name': 'Bob', 'age': 22}, {'name': 'Charlie', 'age': 28}, {'name': 'David', 'age': 22}]
lst.sort(key=lambda x: x['age'])
# 對排序後的list進行分組
groups = []
for k, g in groupby(lst, key=lambda x: x['age']):
groups.append(list(g))
print(groups)
在代碼中,我們定義了一個dict類型的list,並按照年齡字段進行排序。然後,使用groupby()函數進行分組,將每個分組保存到一個新的list中。運行上面的代碼,我們可以得到以下輸出結果:
[
[
{'age': 22, 'name': 'Bob'},
{'age': 22, 'name': 'David'}
],
[
{'age': 25, 'name': 'Alice'}
],
[
{'age': 28, 'name': 'Charlie'}
]
]
可以看到,list中的dict按照年齡字段進行了分組,並將每個分組保存到一個新的list中。
二、List數組根據某個字段排序
在上述代碼示例中,我們需要對list按照指定字段進行排序。那麼如何實現對list數組按照某個字段進行排序呢?我們可以使用Python內置的sorted()函數進行排序。下面是實現的代碼示例:
lst = [{'name': 'Alice', 'age': 25}, {'name': 'Bob', 'age': 22}, {'name': 'Charlie', 'age': 28}, {'name': 'David', 'age': 22}]
lst = sorted(lst, key=lambda x: x['age'])
print(lst)
在代碼中,我們對dict類型的list按照年齡字段進行排序,並將排序結果保存到了原來的lst變量中。運行上述代碼,我們可以得到以下輸出結果:
[
{'name': 'Bob', 'age': 22},
{'name': 'David', 'age': 22},
{'name': 'Alice', 'age': 25},
{'name': 'Charlie', 'age': 28}
]
可以看到,list中的dict按照年齡字段進行了排序。
三、List根據兩個字段去重分組
有時候,我們需要對list中的數據按照兩個字段進行去重分組。為了實現這個功能,我們可以使用Python中的set()函數。下面是實現的代碼示例:
lst = [{'name': 'Alice', 'age': 25}, {'name': 'Bob', 'age': 22}, {'name': 'Charlie', 'age': 22}, {'name': 'David', 'age': 25}]
# 使用set()函數去重
unique_data = [dict(t) for t in set([tuple(d.items()) for d in lst])]
# 對去重後的數據按照年齡字段和姓名字段進行分組
groups = {}
for d in unique_data:
age = d['age']
name = d['name']
if age not in groups:
groups[age] = {}
if name not in groups[age]:
groups[age][name] = []
groups[age][name].append(d)
print(groups)
在代碼中,我們使用set()函數對dict類型的list進行去重,並保存到unique_data變量中。然後,我們對去重後的數據按照年齡字段和姓名字段進行分組,並將每個分組保存到一個新的dict中。運行上述代碼,我們可以得到以下輸出結果:
{
22: {
"Bob": [{"name": "Bob", "age": 22}],
"Charlie": [{"name": "Charlie", "age": 22}]
},
25: {
"Alice": [{"name": "Alice", "age": 25}],
"David": [{"name": "David", "age": 25}]
}
}
可以看到,list中的dict按照年齡字段和姓名字段進行了去重分組,並將每個分組保存到了一個新的dict中。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/232153.html