Как перебрать несколько словарей, чтобы извлечь значение - PullRequest
0 голосов
/ 15 декабря 2018

Я новичок в python и хочу решить эту проблему.У меня есть много уникальных идентификаторов продукта (т. Е. 5331008574423, 5331118575423, 5901008573323), для каждого выполнения транзакции с продуктом с ним связаны две цифры, которые представляют поставщика (т. Е. 5GHF5, 89YOUT, 892HG) и идентификатор транзакции (SPE4A718PE141, SME4A788PE, SYE4B58PE333)

Я хочу получить счет для суммы транзакции, которая имела место для каждого продукта.Поэтому я решил подсчитать идентификаторы транзакций, связанные с каждым продуктом.

Я создал словарь для каждого продукта

, а затем добавил каждую транзакцию в соответствующий продукт и, наконец, добавил все словари productID в одинбольшой словарь, так что я могу циклически проходить через каждый и получать счетчик всех идентификаторов транзакций для каждого продукта.

Я инициализировал словарь

 ProductIDs ={}
 BigDictionary = {}

и добавляю каждую транзакцию в словарь следующим образом

ProductIDs[transaction_id] = suplier_id

Я пытался сделать что-то вроде этого

5331118575423: [89YOUT, SPE4A718PE141], [SME4A788PE147,892HG], [89YOUT,SPE4A718PML90]

, а затем добавить словарь выше к BigDictionary

  BigDictionary.append(ProductIDs)

и пройтись по каждому изидентификатор продукта, чтобы получить счетчик всех идентификаторов транзакций

        for productID, ProductTrans in BigDictionary:

. На данный момент я застрял, есть ли лучший подход к этой проблеме, и как бы я повторил каждый идентификатор продукта и напечатал бы идентификатор продукта и транзакцию?количество идентификаторов?

1 Ответ

0 голосов
/ 15 декабря 2018

Вам необходимо создать словарь, который по умолчанию представляет собой список по каждому элементу, например {[], [], []... }, и для этого необходимо выполнить:

from collections import defaultdict
product_transactions = defaultdict(list)

. На этом этапе вы можете добавлять транзакции с идентификатором поставщика, напримерэто:

product_transactions[product_id].append((transaction_id, supplier_id))

Теперь для подсчета транзакций по продукту вы можете сделать:

for product_id, transactions in product_transactions.items():
    print(len(transactions))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...