generating unique variable name via loops
Fatih Güven
mfthguven at gmail.com
Tue Nov 4 10:36:54 EST 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