Python 根据单个值对元素进行分组

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"),

我有一个“银行申请类型”、“银行名称”及其本地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"),
    (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]}