0

このような文字列があり、y、x、z の値を 3 つの float 変数に保存する必要があります。3 つの数値の長さと符号は一定ではありません。

{'y': 0.02, 'x': -1.0188, 'z': 2.026}

提案?

4

4 に答える 4

3

それが本当に文字列である場合に備えて、jsonで解析できます(またはeval私が提案したくない):

import json
s = "{'y': 0.02, 'x': -1.0188, 'z': 2.026}".replace ("'", '"')
d = json.loads (s)
x, y, z = d ['x'], d ['y'], d ['z']
print (x, y, z)
于 2013-10-16T18:35:38.100 に答える
3

ast.literal_evaldictを使用して、これをこのようなものに簡単に変換できます

import ast
data = ast.literal_eval("{'y': 0.02, 'x': -1.0188, 'z': 2.026}")
print type(data)

出力

<type 'dict'>

そして、次のように の値にアクセスできますxyz

print data['x'], data['y'], data['z']
于 2013-10-16T18:39:41.637 に答える
0

jsonまたはを使用して、他の回答で説明されているように文字列をPython辞書に変換したら、astこれを実行して、辞書内のすべての変数をグローバル変数に追加できます。

>>> data = {'y': 0.02, 'x': -1.0188, 'z': 2.026} # your parsed dictionary
>>> globals().update(data)
>>> print x
-1.0188

ここでglobals()は、グローバルに定義されたすべての変数と関数を保持する辞書を取得updateし、辞書内の名​​前と値をそれらに追加するだけですdata

だけxの場合、これは確かyzやり過ぎですが、すべての変数に対して行う必要がないため、辞書/文字列にさらに多くの変数がある場合に便利ですx = data["x"]。もちろん、これらの変数が重要な組み込み関数などを上書きしないようにする必要があります。

于 2013-10-16T18:50:15.517 に答える
-1
import collections
a=collections.OrderedDict({'y': 0.02, 'x': -1.0188, 'z': 2.026})
[y,x,z]=[ float(a[key]) for key in a] 
于 2013-10-16T18:39:14.510 に答える