假设我想使用forloop自动生成大标题行的索引,以防止为每个标题写索引。如何使用for-loop使用列表元素的值自动生成变量?
在一个文件中,我说了一个包含很多水果名称的标题。每列都有一个数据,我必须使用索引访问下游解析。我不想为每个水果名称准备索引,而是希望运行forloop以实时创建索引值以节省时间。
data =
apple banana orange
genus:x,species:b genus:x,species:b genus:x,species:b
genus:x,species:b genus:x,species:b genus:x,species:b
variety:gala,pinklady,... variety:wild,hybrid... variety:florida,venz,
flavors:tangy,tart,sweet..
global_consumption:....
pricePerUnit:...
seedstocks:.....
insect_resistance:.....
producer:....
# first I convert the header into list like this:
for lines in data:
if 'apple' in lines:
fruits = lines.split('\t')
# this will give me header as list:
# ['apple', 'banana', 'orange']
# then create the index as:
for x in fruits:
str(x) + '_idx' = fruits.index(x)
# this is where the problem is for me .. !??
# .. because this is not valid python method
print(x)
# if made possible, new variable are created as
apple_idx = 0, banana_idx = 1 ... so on
# Now, start mining your data for interested fruits
data = lines.split('\t')
apple_values = data[apple_idx]
for values in apple_values:
do something ......
same for others. I also need to do several other things.
Make sense??
这怎么能成为可能?以一种非常简单的方式。
帖子编辑:做大量的阅读后,我意识到,这是可能的在bash创建使用其他varible的value(string)
一个variable_name
:
how to use a variable's value as other variable's name in bash
但是,在我看来,python是不可能的。我的直觉是,可以在python编程语言中编写这种方法(如果被黑客攻击或作者决定),但python的作者也有可能想到并了解可能的危险或使用这种方法。
- 危险之处在于您总是希望
variable_name
在写入的python脚本中可见。准备一个动态variable_names本来不错,但如果出现任何问题,它可能会导致回溯时出现问题。 - 因为变量名从来没有输入过,如果出现任何问题(特别是在大型程序中),比如说变量值类似于
2BetaTheta
或*ping^pong
这不是有效的变量名称,那将是一个噩梦来跟踪和调试。我的想法。 请其他人可以在为什么这个功能没有被引入python? - 字典方法结束了这个问题,因为我们有
variable_name
的起源记录,但仍然有效与无效variable_name的问题不会消失。
我打算采用dict method
提供的答案,看看我能否找到一个非常简单而全面的方法来实现这一点。
谢谢大家!
这是一个[XY问题](http://mywiki.wooledge.org/XyProblem) - 意思是说,你问的是你认为是你想解决的问题的一个很好的解决方案,而不是询问你试图解决的实际问题。没有理由用您尝试的方式命名具有不同名称的变量。你想要实现的是什么? –
我想在variablename是(x-name +'_idx')时自动创建一个变量,它的值是它在该列表中的位置。 – everestial007
也许你可以创建一本词典?然后你可以像dict [“apple”]那样访问它,并且你可以得到相应的索引。 – Antimony