'Assign the result of a loop to a variable in Python
Consider a list I want to parse using a for
:
friends = ["Joe", "Zoe", "Brad", "Angelina", "Zuki", "Thandi", "Paris"]
for i in friends:
print i
will return :
"Joe", "Zoe", "Brad", "Angelina", "Zuki", "Thandi", "Paris"
However, if I want to put it to a (str) variable, like :
friends = ["Joe", "Zoe", "Brad", "Angelina", "Zuki", "Thandi", "Paris"]
for i in friends:
var=i
first I have to declare another var
variable, which is silly but whatever.
then,
print var
will return the last element of the list, which is "Paris", because the variable is overwritten for each iteration right.
So my question is : how can I assign the output of my loop "i", for each iteration, to a variable in Python ?
Sorry for the sillyness of this question but this is a concept I can't seem to figure out clearly.
Solution 1:[1]
If I understand well, you'd like to dynamically create variables. Here it is.
from collections import OrderedDict
friends = ["Joe", "Zoe", "Brad", "Angelina", "Zuki", "Thandi", "Paris"]
d = OrderedDict()
for idx, value in enumerate(friends):
key = 'var' + str(idx)
d[key] = value
print(d)
# Output
OrderedDict([('var0', 'Joe'), ('var1', 'Zoe'), ('var2', 'Brad'), ('var3', 'Angelina'), ('var4', 'Zuki'), ('var5', 'Thandi'), ('var6', 'Paris')])
Solution 2:[2]
I also have this question, this is how I managed to solve it somewhat:
friends = ["Joe", "Zoe", "Brad", "Angelina", "Zuki", "Thandi", "Paris"]
new_friends = ' '.join([x for x in friends])
print(new_friends)
Will return:
Joe Zoe Brad Angelina Zuki Thandi Paris
Solution 3:[3]
var = ''
friends = ["Joe", "Zoe", "Brad", "Angelina", "Zuki", "Thandi", "Paris"]
for i in friends:
var=i
if list and loop are in function then declare var as global
global var
in starting of function
Solution 4:[4]
If you want to join the values in friends
into a comma-separated string, that would be
s = ','.join(friends)
If you want to include quotes around the names, maybe something like
s = ','.join(['"{0}"'.format(x) for x in friends])
Solution 5:[5]
Try this at the end of the loop:
the_variable = the_variable + i
However, if you are to do this, you should add a space to the end of every item in the dictionary, otherwise it will output:
JoeZoeBradAngelinaZukiThandiParis
Solution 6:[6]
I would use a dictionary instead, as I too spent a while looking into this, and determined that a dictionary would be easy enough.
friends = ["Joe", "Zoe", "Brad", "Angelina", "Zuki", "Thandi", "Paris"]
dict= {}
for i in friends:
dict[i] = i
print(dict)
print(dict['Zuki'])
dict['Zuki'] = "Tim Smith"
print(dict['Zuki'])
The Other option would be to just call the number:
print(friends[0])
As for automatic assignment I haven't found a way to do it.
Solution 7:[7]
I think the easiest & cleanest way for you would be a "List Comprehension", see here.
Here is the respective code:
friends = ["Joe", "Zoe", "Brad", "Angelina", "Zuki", "Thandi", "Paris"]
var = [(i) for i in friends]
Should do what you want, right?
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | SparkAndShine |
Solution 2 | e71az |
Solution 3 | hb X |
Solution 4 | tripleee |
Solution 5 | CheezBiscuit |
Solution 6 | Dayantat |
Solution 7 |