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

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

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

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

Q&A

3回答

10500閲覧

配列の文字列を変数名とする

amaorine

総合スコア7

Python 3.x

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

0グッド

0クリップ

投稿2016/10/17 05:34

Python3.5でプログラミングをしています。
たとえば
a,b,c
1,2,3
4,5,6

という内容のCSVファイルを読み込み、
a=[1,4]
b=[2,5]
c=[3,6]

とするのは可能でしょうか。
要は取り込んだcsvの要素を変数名にするのは可能でしょうか。

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

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

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

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

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

guest

回答3

0

他の方法ですと、以下のようなこともできます。

python

1# globals()[key] = value 2globals()["a"] = ["1", "4"] 3print(a) # ["1", "4"]と表示される

以下はサンプルです。
test.csv

a,b,c 1,2,3 4,5,6

python

1import csv 2 3with open("test.csv", "r") as file: 4 reader = csv.reader(file) 5 variable_names = [] # →["a", "b", "c"] 6 num_lists = [] # →[["1", "2", "3"], ["4", "5", "6"]] 7 for index, row in enumerate(reader, 1): 8 if index == 1: 9 variable_names = row 10 else: 11 num_lists.append(row) 12 13for index, name in enumerate(variable_names): 14 right_side = [] # 右辺となるリスト 15 for i in num_lists: 16 right_side.append(i[index]) 17 globals()[name] = right_side # a = ["1", "4"]等と同義の処理 18 19print(a) # ['1', '4'] 20print(b) # ['2', '5'] 21print(c) # ['3', '6']

投稿2016/10/17 14:50

編集2016/10/17 14:51
toritoritorina

総合スコア972

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

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

0

exec()という組み込み関数を使えばできます。詳細はリンク先を見てください。

lang

1code = '%s = [%s, %s]' % ('a', '1', '4') # "a = [1, 4]" 2exec(code) 3

ただしexec()は、codeに何が入っていてもPythonのコードとして実行してしまいます。内容をしっかり検証しないと危険なので、CSVなどプログラム外から読み込んだものをそのまま使ったりするのはお勧めしません。

投稿2016/10/17 08:37

編集2016/10/17 08:38
ikedas

総合スコア4343

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

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

0

ここのサイトに同じような質問がありましたので、ご紹介します。
出来そうですが、参照する場合のスコープの範囲など、いろいろと制限はあるようです。

https://teratail.com/questions/9130

投稿2016/10/17 08:44

nagaetty

総合スコア1106

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問