Python 根据单个值对元素进行分组
我有一个“银行申请类型”、“银行名称”及其本地ID值的列表。比如:Python 根据单个值对元素进行分组,python,list,grouping,Python,List,Grouping,我有一个“银行申请类型”、“银行名称”及其本地ID值的列表。比如: BANKS = [ (1, "Bank A Web", "BankA"), (2, "Bank B ATM", "BankB"), (3, "Bank A Wap", "BankA"), (4, "Bank C", "BankC"), ] 我想根据他们的银行名称对他们的ID进行分类,因此我使用了一个简化的列表 BANKS_CATS = [ (1, "BankA"),
BANKS = [
(1, "Bank A Web", "BankA"),
(2, "Bank B ATM", "BankB"),
(3, "Bank A Wap", "BankA"),
(4, "Bank C", "BankC"),
]
我想根据他们的银行名称对他们的ID进行分类,因此我使用了一个简化的列表
BANKS_CATS = [
(1, "BankA"),
(2, "BankB"),
(3, "BankA"),
(4, "BankC"),
]
我想将每个银行Id与其他相关银行Id(来自同一银行的不同服务)匹配
此外,值列表是一个简化的示例,我的实际银行名称和银行服务名称不同,并且没有相似的模式来匹配它们进行分类
我点了我的实际清单
my_new_list = sorted(BANKS_CATS, key=lambda s: s[1])
然后试着把它分组
from itertools import groupby
grouped = groupby(my_new_list, key=lambda s: s[1])
但是从那时起,我无法实现我想要的。。我尝试迭代分组的值,但没有成功
我怎样才能从这一点上达到要求的结果 这是一个没有依赖项的单行代码:
{int(t[1][4:]):[i[0] for i in my_list if i[1] == t[1]] for t in my_list}
首先从my_列表中收集组,然后在my_列表中查找每个组的值
my_list = [
(1, "BankA"),
(2, "BankB"),
(3, "BankA"),
(4, "BankC"),
]
ids, result = {}, {}
for num, bank in my_list: ids.setdefault(bank, []).append (num)
for num, bank in my_list: result[num] = ids[bank]
print result
输出
{1: [1, 3], 2: [2], 3: [1, 3], 4: [4]}
您需要更新后的结果与问题中提到的格式相同?是的,每个银行Id密钥必须与同一银行类别的Id列表匹配请检查我的答案。
{1: [1, 3], 2: [2], 3: [1, 3], 4: [4]}