在Python 3中将变量名称转换为字符串

时间:2017-04-03 18:50:27

标签: python

我有一个列表列表,我想将其转换为字符串列表,其中字符串是变量的名称。我想循环遍历列表并将列表的长度提取到一个列表中,将列表的名称提取到另一个列表中。为了说明这里尝试使用str(变量),这显然不起作用,因为它转换变量的值,而不是名称。我正在尝试转换名称

# Here are the initial lists
common_nouns = ['noun', 'fact', 'banana']
verbs = ['run', 'jump']
adjectives = ['red', 'blue']
# Here is my list of lists:
parts_of_speech = [common_nouns, verbs, adjectives]
labels=[]
data=[]
for pos in parts_of_speech:
    if pos != []:
        labels.append(str(pos)) # This part doesn't work
        data.append(len(pos))

结果:

labels = ["['noun', 'fact', 'banana']", "['run', 'jump']", "['red', 'blue']"]

期望的结果:

labels = ['common_nouns', 'verbs', 'adjectives']

编辑:添加了初始列表

2 个答案:

答案 0 :(得分:1)

这与如何拥有“变量变量”的常见问题相反。但答案完全相同:不要这样做,使用词典。

将这些数据存储为单个字典,并将这些值作为键,然后您可以使用.keys()方法为您提供所需的结果。

答案 1 :(得分:0)

丹尼尔罗斯曼建议,我最后做了一本字典。以下是实施:

parts_of_speech = [common_nouns, verbs, adjectives]
all_labels = ['common_nouns', 'verbs', 'adjectives']
pos_dict = dict(zip(all_labels, parts_of_speech))
labels=[]
data=[]
for pos, lst in pos_dict.items():
    if lst:
        data.append(len(lst))
        labels.append(pos)