Jak odwołać się do słownika za pomocą ciągu wejściowego, który jest nazwą słownika

Nov 26 2020

Piszę kod, który tworzy listę zakupów w Excelu (pokazuje cenę, nazwę każdego produktu i pokazuje na końcu cenę całkowitą).

Na przykład pobiera pewną liczbę ciągów, które są również nazwami słowników.

I tworzy plik Excela z listą zakupów, ich ceną i całkowitą ceną na końcu.

Nie wiem, jaki to będzie słownik, ale chcę uzyskać cenę, która jest parą kluczy.

Kod: importuj openpyxl jako xl

    Milk = {
    "name": "Milk",
    "price":  1,
    "id": "01",
    }
    
    Chicken = {
    "name": "Chicken",
    "price": 5,
    "id": "02"
    }
    wb = xl.load_workbook('List.xlsx')
    
    sheet = wb['Лист1']
    
    command = ''
    
    num = int(input())
    
    for row in range(2,num):
       command = input()
       
       value = command
       command = sheet.cell(row,1)
       command.value = value
       command = sheet.cell(row,2)
       key = 'price'
       
       command.value = command.get("price")
    wb.save('transactions3.xlsx')

Odpowiedzi

2 fischmalte Nov 26 2020 at 23:24

Domyślam się, że to, czego szukasz, to locals()przechowywanie między innymi dostępnych zmiennych w zakresie lokalnym, zobacz ten post .

my_dict = {'apples': 4}

# assume user input is `my_dict`
dict_name = input()

# return the dictionary's values
print(locals()[dict_name])

Podobnie jak marginesie, zamiast używania openpyxl, polecam użyć pandy dataframes , które implementują .to_csvi .from_csvi jest dla mnie o wiele bardziej przyjazny dla użytkownika.