2014-12-22 4 views
0

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

dict1 = { "a": 5, "b": 1, "c": 8 } 
dict2 = { "a": 2, "b": 6, "c": 11 } 

Как принимать ввод и поиск в словаре называется то, что вход есть? Поэтому я беру ввод и печатаю значение c этого словаря.

Идея для чего-то, что действует так:

>>> my_function() 
Enter a dict: dict1 
The answer is: 8 

>>> my_function() 
Enter a dict: dict2 
The answer is: 11 
+5

Не. Положите эти dicts в другой dict. –

ответ

6

Вы должны сделать это вместо:

global_dict = { 
    'dict_1': {"a":5, "b":1, "c":8}, 
    'dict_2': {"a":2, "b":6, "c":11}, 
} 

dict_name = raw_input("Enter a dict: ") 

try: 
    print(global_dict[dict_name]['c']) 
except KeyError: 
    print('Dict not found') 
0

Как сказано в комментарии и другие ответы, рекомендуется ставить dicts внутри другого ДИКТ. Однако, чтобы достичь того, чего вы хотите, вы можете использовать функцию globals():

dict_name = raw_input("Enter dict name:") 
selected_dict = globals()[dict_name] 
print selected_dict['c'] 
0

хранить их в Словаре из dicts:

all_dicts = {"dict1":{"a": 5, "b": 1, "c": 8},"dict2":{"a": 2, "b": 6, "c": 11}} 

d, v = raw_input("Enter dict and key separated by a space").split() 

print(all_dicts.get(d,{}).get(v,"Incorrect dict or key")) 
Смежные вопросы