次のようにフォーマットされた 2 つのテキスト ファイルがあります。
foo,bar,etc
もう1つは次のようなものです:
1,2,3
そして、これら 2 つのテキスト ファイルを Python 用の 1 つの辞書に入れたいと思います。それぞれを手作業で行う必要はありません。出力で文字列を数値に接続したい。これを行う方法はありますか?
次のようにフォーマットされた 2 つのテキスト ファイルがあります。
foo,bar,etc
もう1つは次のようなものです:
1,2,3
そして、これら 2 つのテキスト ファイルを Python 用の 1 つの辞書に入れたいと思います。それぞれを手作業で行う必要はありません。出力で文字列を数値に接続したい。これを行う方法はありますか?
keys = first_string.split(',')
values = second_string.split(',')
output_dict = dict(zip(keys, values))
>>> first_string = "foo,bar,etc"
>>> second_string = "1,2,3"
>>> keys = first_string.split(',')
>>> values = second_string.split(',')
>>> output_dict = dict(zip(keys, values))
>>> output_dict
{'etc': '3', 'foo': '1', 'bar': '2'}
値を実際の数値にしたい場合は、次のように変換できます。
values = [int(v) for v in second_string.split(',')]
ファイルからデータを読み取り、行をリストに分割し、int
必要に応じてそれらを s に変換する方法を知っていると仮定します。
s1 = ['foo', 'bar', 'etc']
n1 = [1, 2, 3]
dict(zip(s1, n1))
収量:
{'bar': 2, 'etc': 3, 'foo': 1}
注:
zip()はあなたのリストを結合します:
zip(s1, n1)
[('foo', 1), ('bar', 2), ('etc', 3)]
行データからリストを作成することに慣れていない場合は、特定の行に対してsplit()を使用して次のことができます。
line = line.split(',') #'foo,bar,etc' => ['foo','bar','etc'] / '1,2,3' => ['1','2','3']
数値データをint
sに変換する場合は、リスト内包表記を使用します。
n1 = [int(n) for n in line] # ['1','2','3'] => [1, 2, 3]
テキスト ファイルから値とキーを直接読み取ることができます。サンプル コードは次のようになります。
import fileinput
keys = []
values = []
for line in fileinput.input(['v.txt']):
values = values + [int(v) for v in line.split(',')]
for line in fileinput.input(['k.txt']):
keys = keys + [k.replace("\n","") for k in line.split(',')]
the_dict = dict(zip(keys, values))
値は整数として必要であり、テキスト ファイルには複数の行が含まれている可能性がありますが、同じ数の要素が含まれている必要があると想定しています。
私は始めたばかりですが、1行で2つを一緒に実行する方が簡単かもしれません:
string_dict = {'etc': '3', 'foo': '1', 'bar': '2'}