Используйте переменную из функции в словарь

#python #function #dictionary

Вопрос:

Может ли кто-нибудь помочь мне решить эту проблему. Я попытался найти ответ, но не смог его найти

 def thAnalysis(direction):
    # thAnalysis(<direction>) Time History Analysis Direction in <vertical>, <horizontal>, <both>
    both = {
        "folder": "VHGM",
        "title": "Horizontal   Vertical",
        "plot": "Horizontal   Vertical GM plot"}
    vertical = {  # done
        "folder": "VGM",
        "title": "Vertical",
        "plot": "Vertical GM plot"}
    horizontal = {
        "folder": "HGM",
        "title": "Horizontal",
        "plot": "Horizontal GM plot"}

    print(direction["folder"])
 

Я вызываю функцию как

thAnalysis('horizontal')

и я получаю эту ошибку

 print(direction["folder"])
TypeError: string indices must be integers
 

Спасибо вам за вашу помощь

Комментарии:

1. переменная direction -это не словарь, это 'horizontal' строка.

2. Какова ваша цель? Вы пытаетесь выбрать один из древовидных словарей?

3. какова цель thAnalysis этого ?

4. thAnalysis () — это функция, которую я написал для выполнения анализа истории времени (Инженерия землетрясений). Код, которым я поделился, был всего лишь частью длинного кода

Ответ №1:

В вашем примере direction это строка «горизонтальная», а не словарь в названной переменной horizontal . Вместо того, чтобы помещать свои словари в локальные переменные, поместите их во внешние dict , которые сопоставят имя строки dict с нужным вам.

 def thAnalysis(direction):
    # thAnalysis(<direction>) Time History Analysis Direction in <vertical>, <horizontal>, <both>
    directions = {
        "both": {
            "folder": "VHGM",
            "title": "Horizontal   Vertical",
            "plot": "Horizontal   Vertical GM plot"},
        "vertical": {  # done
            "folder": "VGM",
            "title": "Vertical",
            "plot": "Vertical GM plot"},
        "horizontal": {
            "folder": "HGM",
            "title": "Horizontal",
            "plot": "Horizontal GM plot"}
    }

    if direction not in directions:
        print("invalid input")
    else:
        print(directions[direction]["folder"])

thAnalysis("horizontal")