#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")