Python Forum
easy name problem - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: easy name problem (/thread-33988.html)



easy name problem - Steinsack - Jun-16-2021

Hello,

I am a beginner in Phyton. It is a very basic question I guess, but pls help me anyway :)

listA=[]
a=input()
globals()[a]=[]    #generates a new list with the name of the input string
listA.append(????????)    #question
--> I would like to add the new list to listA. I know the name is in a, but if I put a in, the string gets added to listA and not the new list.
What do I have to put inside the brackets?

Cheers


RE: easy name problem - snippsat - Jun-16-2021

You should not use globals() that's the internal dictionary that Python use.
Can make visible dictionary that do the same,then it's much more understandable and readable for all.
Here a look a two versions.
list_a = []
animal = input('Enter a animal: ') # cat
more_animals = ['Sheep', 'dog']
list_a.append(animal)
list_a.append(more_animals)
print(list_a)
Output:
['cat', ['Sheep', 'dog']]
So this is normal way to make a list and append to it,will lose refence to variable names.
If need also names for what is the data structure then can use a dictionary.
list_a = []
animal_dict = {}
animal_dict['animal'] = input('Enter a animal: ')
more_animals = ['Sheep', 'dog']
animal_dict['more_animals'] = ['Sheep', 'dog']
# Can also append a dicionray to a list
list_a.append(animal_dict)
print(animal_dict)
print(list_a)  
Output:
{'animal': 'cat', 'more_animals': ['Sheep', 'dog']} [{'animal': 'cat', 'more_animals': ['Sheep', 'dog']}]
So now we have a visible dictionary that really dos the same as globals().
If first code i could to this which is a bad💀 way of doing this.
>>> globals()['more_animals']
['Sheep', 'dog']
In second code it make more sense as can do this.
>>> animal_dict['more_animals']
['Sheep', 'dog']