📅  最后修改于: 2023-12-03 15:34:08.678000             🧑  作者: Mango
有时,我们需要按照另一个列表的某些值来分组主列表中的子列表。在Python中,我们可以使用列表推导式和字典来轻松完成这个任务。
我们可以使用列表推导式来按照另一个列表的值分组子列表。具体步骤如下:
下面是一个示例程序:
data = [
{'name': 'John', 'age': 25, 'city': 'New York'},
{'name': 'Jane', 'age': 30, 'city': 'Chicago'},
{'name': 'Tom', 'age': 35, 'city': 'New York'},
{'name': 'Alice', 'age': 27, 'city': 'Chicago'}
]
# 创建一个字典来存储分组后的子列表
grouped_data = {city: [] for city in {d['city'] for d in data}}
# 遍历主列表中的每个元素,按照城市将其分组
for d in data:
grouped_data[d['city']].append(d)
# 输出分组后的结果
for city, records in grouped_data.items():
print(f"{city}:")
for r in records:
print(f" {r}")
输出结果如下:
Chicago:
{'name': 'Jane', 'age': 30, 'city': 'Chicago'}
{'name': 'Alice', 'age': 27, 'city': 'Chicago'}
New York:
{'name': 'John', 'age': 25, 'city': 'New York'}
{'name': 'Tom', 'age': 35, 'city': 'New York'}
除了列表推导式,我们还可以使用字典来完成上述任务。具体步骤如下:
下面是一个示例程序:
data = [
{'name': 'John', 'age': 25, 'city': 'New York'},
{'name': 'Jane', 'age': 30, 'city': 'Chicago'},
{'name': 'Tom', 'age': 35, 'city': 'New York'},
{'name': 'Alice', 'age': 27, 'city': 'Chicago'}
]
grouped_data = {}
for d in data:
if d['city'] not in grouped_data:
grouped_data[d['city']] = []
grouped_data[d['city']].append(d)
# 输出分组后的结果
for city, records in grouped_data.items():
print(f"{city}:")
for r in records:
print(f" {r}")
输出结果与之前相同。
以上就是按照另一个列表分组子列表的方法。无论使用列表推导式还是字典,都能轻松完成这个任务。