Como se referir a um dicionário usando a string de entrada que é o nome do dicionário

Nov 26 2020

Eu escrevo um código que cria a lista de compras em excel (mostra preço, nome de cada produto e mostra preço total no final).

Por exemplo, ele obtém um certo número de strings que também são nomes de dicionário.

E cria um arquivo excel com uma lista de compras, seu preço e preço total no final.

Não sei qual será o dicionário, mas quero obter um preço que é um par de chaves.

Código: import openpyxl as 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')

Respostas

2 fischmalte Nov 26 2020 at 23:24

Acho que o que você deve estar procurando é locals(), que mantenha, entre outras, as variáveis ​​disponíveis no escopo local, veja este post .

my_dict = {'apples': 4}

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

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

Assim como uma nota lateral, em vez de usar openpyxl, eu recomendo usar pandas dataframes , que implementam .to_csve .from_csve para mim é muito mais amigável.