generating unique variable name via loops

Fatih Güven mfthguven at gmail.com
Tue Nov 4 16:36:54 CET 2014


4 Kasım 2014 Salı 17:01:17 UTC+2 tarihinde Peter Otten yazdı:
> Fatih Güven wrote:
> 
> > 4 Kasım 2014 Salı 15:37:59 UTC+2 tarihinde Peter Otten yazdı:
> >> Veek M wrote:
> >> 
> >> > Fatih Güven wrote:
> >> > 
> >> >> 4 Kas?m 2014 Sal? 13:29:34 UTC+2 tarihinde Fatih Güven yazd?:
> >> >>> I want to generate a unique variable name for list using python.
> >> >>> 
> >> >>> list1=...
> >> >>> list2=...
> >> > 
> >> > for x in range(1,10):
> >> >     exec("list%d = []" % x)
> >> 
> >> Why would you do this?
> > 
> > I have a structured and repetitive data. 
> 
> I was actually asking "Veek M".
> 
> > I want to read a .txt file line
> > by line and classified it to call easily. For example employee1 has a
> > name, a salary, shift, age etc. and employee2 and other 101 employee have
> > all of it.
> > 
> > Call employee1.name or employee2.salary and assign it to a new variable,
> > something etc.
> 
> I can only repeat my previous advice. Instead of creating variables for 
> employee1, employee2, and so on make a list of employees:
> 
> $ cat employees.txt
> Peter,3000
> Paul,2000
> Mary,1000
> 
> $ cat employees.py
> #!/usr/bin/env python3
> import csv
> 
> class Employee:
>     def __init__(self, name, salary):
>         self.name = name
>         self.salary = salary
> 
> if __name__ == "__main__":
>     employees = []
>     with open("employees.txt") as f:
>         for row in csv.reader(f):
>             employees.append(Employee(row[0], int(row[1])))
> 
>     for employee in employees:
>         print(employee.name, "-- salary:", employee.salary, "doubloons")
> 
> $ python3 employees.py 
> Peter -- salary: 3000 doubloons
> Paul -- salary: 2000 doubloons
> Mary -- salary: 1000 doubloons
> 
> You wouldn't want to reference Paul as employee2 -- what if the order in the 
> text file changed? Instead you can make a dict that maps name to employee...
> 
>     employees_by_name = {}
>     for employee in employees:
>         name = employee.name
>         if name in employees_by_name:
>             raise ValueError("duplicate name {}".format(name))
>         employees_by_name[name] = employee
> 
> and use that dict to look up an employee:
> 
>     while True:
>         name = input("enter a name ")
>         if name == "":
>             print("That's all folks")
>             break
>         if name not in employees_by_name:
>             print("unknown name")
>         else:
>             print("Salary:", employees_by_name[name].salary, "doubloons")
> 
> $ python3 employees.py 
> Peter -- salary: 3000 doubloons
> Paul -- salary: 2000 doubloons
> Mary -- salary: 1000 doubloons
> enter a name Peter
> Salary: 3000 doubloons
> enter a name Mary
> Salary: 1000 doubloons
> enter a name paul
> unknown name
> enter a name Paul
> Salary: 2000 doubloons
> enter a name 
> That's all folks
> $


Thanks for your concern, I will try this. Actually, the main focus is that are there any other Paul in my team. So i want to create a simple ID for employee to distinguish two Paul. I belive that you have a solution for this.



More information about the Python-list mailing list