1

「銀行アプリケーションの種類」「銀行名」とそのローカル 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 (同じ銀行の異なるサービス) と照合したい

{1: [1, 3],
 2: [2],
 3: [1, 3],
 4: [4]}

また、その値リストは単純化された例です。私の実際の銀行名と銀行サービス名は異なり、それらを分類するために一致する類似のパターンはありません。

実際のリストを注文しました

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])

しかし、その時点から、私が望むものを達成できませんでした..グループ化された値を反復しようとしましたが、成功しませんでした。

この時点から必要な結果を得るにはどうすればよいですか?

4

2 に答える 2

2
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]}
于 2013-09-16T11:59:49.153 に答える