質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

246閲覧

(変数=str型) strをリスト名に使用したい

TTRA

総合スコア10

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/04/10 13:21

#(変数=str型) strをリスト名に指定したい

ユーザーにinputやComboboxなどで選択してもらい
選択に応じたリスト型の値を引き出したいのですが

ABC = [1,2]
word = "ABC"
("ABC"の文字列はユーザーの選択によって変わります。)

変数の中にあるstr型をリスト名として使用する方法がわかりません。
この形から変数「 word 」を用いてリスト型「 ABC = [1,2] 」を指定し、
print結果として「1,2」を出したいと思っています。
初歩的な質問ですが、よろしくお願いします。

python3

1ABC = [1,2] 2XYZ = [3,4] 3 4word = input("ABCまたはXYZを入力") 5print(word[0]) 6 7#【実行】 8#ABCまたはXYZを入力「ABC」 9#A 10 11#文字列"ABC"の0番目、Aが出力されてしまう 12

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

あらかじめ決った変数しか選べないということから考えても、案に出ている方法を採るのがいいとは思いますが、質問の意図に近いのはevalを使う方法でしょう。

python

1word = input("ABCまたはXYZを入力") 2 3eval ('print({0}[0])'.format(input))

evalは組み立てた文字列をpythonの式として実行する関数です。
文を実行したいときは、execを使います。

ただ、質問の状況のように、外部からの入力を式/文として実行してしまうのは危険でもあるので、きちんと判った上で使う必要があります。

投稿2019/04/10 14:37

TakaiY

総合スコア12657

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TTRA

2019/04/10 15:05

eval,exec関数は素直に知りませんでした、軽く調べただけなのでまだ理解しきれてはいませんが Comboboxを使用するのでユーザーが手動入力した場合も危ないですし if文を勧められる理由がわかりました。 回答ありがとうございます!
guest

0

ベストアンサー

そのままやるのであれば、wordif文で比較します。

投稿2019/04/10 13:23

otn

総合スコア84423

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TTRA

2019/04/10 13:54 編集

回答ありがとうございます。 できない状態から脱する事ができました! 重ねてお聞きしたいのですが、変数の中に入った値("ABC")を取り出し、 取り出した("ABC")をリストの変数名として使用するという手順は難しいでしょうか 下記の形ではエラーになりますが、これに近い書き方はできないかと思っています、よろしくお願いします print( {0}.format( word[0]  )  ) AttributeError: 'set' object has no attribute 'format'
mkgrei

2019/04/10 13:56

ダブルクォーテーションが足りてないです。
otn

2019/04/10 14:00

変数名では無いですが、こんな感じでしょうか。 foo = {"ABC": [1,2], "XYZ": [3,4]} word = input("ABCまたはXYZを入力") if word in foo: print(foo[word][0])
TTRA

2019/04/10 14:46

これです!辞書型で囲って(B[A])なら中の値が出てくるのですね、思いつきませんでした。 if構文を個別に作る大作業かと思っていたので、短くまとまっててとてもありがたいです。 求めていた方法を得る事ができました、回答ありがとうございました!
TTRA

2019/04/10 14:55

>mkgreiさん 我が事ながら初歩的なミスで笑ってしまいました・・・ ご指摘ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問