data1 = [1,2,3,4,5]
data2 = [7,8,9,10,11]
x = data1
y = data2
我需要的是上述变量的字符串如下:
xlabel = 'data1'
ylabel = 'data2'
不是手动编写,而是如何使用x调用,如下所示:
xlabel = str(x)
但是上面的错误。 那么,怎么办?
xlabel =???
有没有pythonic方式吗?
答案 0 :(得分:5)
要了解为什么这没有意义,请考虑以下代码段
def magic_name_getter(object):
# here be dragons
return the_name
data1 = [1,2,3,4]
magic_name_getter(data1) # returns 'data1'
data1 = [1,2,3,4,5]
data2 = [1,2,3,4,5]
magic_name_getter(data2) # returns 'data2' (..or 'data1'?)
magic_name_getter([7,8,9,10,11]) # returns ... ummm ... ???
python中的对象可以有多个名称,或者根本没有名称。
所以你想要的是not impossible,这非常困难。由于变量名称是用例的重要数据,因此您应该使用 keys 和 values 的字典将名称映射到列表,以便您可以轻松访问名称(键)以及数据(值)。
答案 1 :(得分:3)
您应该考虑组织数据,例如在字典中
a = dict(
data1 = [1,2,3,4,5],
data2 = [6,7,8,9,10],
)
x = a.keys()[0]
y = a.keys()[1]
print x, y
输出:
data1 data2
通常您不需要将密钥存储在x
和y
等单独的变量中,而是直接在a.keys()
或a.items()
上工作。
答案 2 :(得分:1)
collections.namedtuple
可能会帮助您:
import collections
Parameters = collections.namedtuple('Parameters', 'dataname, data', verbose = False)
x = Parameters('data1', [1,2,3,4,5])
y = Parameters('data2', [7,8,9,10,11])
>>> x.dataname
'data1'
>>> x.data
[1, 2, 3, 4, 5]
>>> y.dataname
'data2'
>>> y.data
[7, 8, 9, 10, 11]
您可以将它用于这样的情节:
plt.scatter(x.data, y.data)
plt.xlabel(x.dataname)