Python 3: Как создать список (или словарь) из значения в списке внутри словаря, используя ввод пользователя? - PullRequest
0 голосов
/ 05 октября 2018

Возможно ли создание списка / словаря из списка внутри словаря с использованием ввода пользователя?

E.g.
in the dictionary: {'fruits', 'veggies', 'drinks'}
every key has list:  fruits = ['apple','manggo']
every value has a list (or maybe dict): apple = ['stock':30, 'amount':10] 

До сих пор мне удавалось создать список в словаре, но я не могу создатьновый список от каждого значения в списке apple = ['stock':30].

Мой код

class Inventory:


    def __init__(self):

        self.dict_inv = dict()
        self.count_inv = int(input("Enter the number of inventories: "))


        for count in range(self.count_inv):

            name_inv = str(input("Enter Inventory #%d: " % (count+1)))
            self.dict_inv[name_inv] = count
            self.dict_inv[name_inv] = []


        for name_inv in self.dict_inv:

            max_item = int(input("How many items in {} " .format(name_inv)))

            for count in range(max_item):

                name_item = str(input("Enter item #%d: " % (count+1)))
                self.dict_inv[name_inv].append(name_item)
                self.dict_inv[name_inv[name_item]] = [] # <-- ERROR

        # PRINTS EVERYTHING 
        for key in self.dict_inv.keys():

            if type(self.dict_inv[key]) is list:
                print("{} is a list" .format(key))
                print("items in {} are {}" .format(key, self.dict_inv[key]))


Inventory()

1 Ответ

0 голосов
/ 05 октября 2018

Не уверен, что вам нужно создать класс для этого.Достигнет ли это того, что вы пытаетесь сделать?

# define a generator that ask the user to enter things until they quit.
def ask(thing):
    user_input = 'x'
    while user_input != 'quit':
        user_input = input("Enter %s or 'quit' to stop: " % (thing))
        if user_input != 'quit':
           yield(user_input)


# use list comprehension to create inventory
inventory = [{c: [ {i: int(input("Enter stock: "))} for i in ask("item")]} for c in ask("category")]

# voila!
print( inventory )

Вот что происходит, когда исполняется приведенный выше код:

$ python3 inventory.py
Enter category or 'quit' to stop: fruit
Enter item or 'quit' to stop: apples
Enter stock: 45
Enter item or 'quit' to stop: bananas
Enter stock: 23
Enter item or 'quit' to stop: berries
Enter stock: 47
Enter item or 'quit' to stop: quit
Enter category or 'quit' to stop: cars
Enter item or 'quit' to stop: fords
Enter stock: 4
Enter item or 'quit' to stop: toyotas
Enter stock: 7
Enter item or 'quit' to stop: quit
Enter category or 'quit' to stop: quit
[{'fruit': [{'apples': 45}, {'bananas': 23}, {'berries': 47}]}, {'cars': [{'fords': 4}, {'toyotas': 7}]}]

Я думаю, вы можете получить это в классе, если хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...