Python 3: Как создать словарь с несколькими словарями и где ключи также имеют несколько значений? - PullRequest
0 голосов
/ 30 сентября 2018

Я писал код для системы типа Inventory и все это время я использовал set() только для того, чтобы понять, что строки / числа внутри нее не в порядке.

Так что я снова переписываю свой код и вместо него буду использовать dict().Тем не менее, я до сих пор не знаю, как принять этот подход.Я хотел бы, чтобы мой вывод был примерно таким:

{'fruits':{'apple':{20, 15}},{'orange':{10, 12}}}, {'veggies':{'cucumber':{30, 20}}, {'cabbage':{40, 15}}}}

Примечание: я не уверен, что это скобки или скобки, которые я должен использовать в качестве примеров

Проще говоря:

Fruits & Veggies - Inventory Names
Apple and Orange - Items in the Inventory
10, 30 & 40 - Number of stocks of the item
12, 20,& 15 - Amount of each item

Мой код:

https://pastebin.com/gu5DJX5K Уже некоторое время ищу и не могу найти аналогичный пример кодов, которые я могу применить к моему.

1 Ответ

0 голосов
/ 30 сентября 2018

Словари также не упорядочены - и наборы, и словари в Python используют хеш-таблицы, которые не сохраняют порядок.Если вам нужно упорядочить, вы должны использовать классы или списки.

Если вы все равно используете словари, то вполне допустимо, чтобы значения в словаре были другим словарем.Чтобы иметь несколько значений для ключа, сохраните значения в списке, и значение, соответствующее этому ключу, будет списком (или, если вам не нужно упорядочивать, набором).

Это будет выглядетьчто-то вроде:

{"fruits" => {"apple" => [20, 15]
              "orange" => [10, 12]}
 "veggies" => {"cucumber" => [30, 20]
               "cabbage" => [40, 15]}}

Однако я настоятельно не рекомендую вам использовать словари для всего.Классы просто намного чище в использовании.Я бы порекомендовал что-то вроде:

class Inventory:
    def __init__(self, fruits, veggies):
        self.fruits = fruits # list of Items
        self.veggies = veggies # another list of Items

class Item:
    def __init__(self, name, stock, amount):
        self.name = name # a string
        self.stock = stock # an int
        self.amount = amount # an int
...