Как динамически создавать словари списков в python, используя переменную string data - PullRequest
0 голосов
/ 02 февраля 2019

Я перебираю CSV-файл и хочу сгруппировать все общие строки, основанные на данном столбце, в словарь, заполненный остальными значениями этих строк.

пример:

Date, Name, Gender, Address 

01/02/2019, John Doe, Male, 1 example street

21/12/2018, Mary Robinson, Female, 2 Lane St.

05/06/2017, John Doe, Male, 1 example street

dates = []
names = []
genders = []
addresses = []

for row in readFile: 
    date = row[0]
    name = row[1]
    gender = row[2]
    address = row[3]

    names.append(name)
    dates.append(dates)
    genders.append(gender)
    addresses.append(address)




    if name not in names:
       #Create Dictionary with using the value of name. (exec?)
       #Then populate dictionary with rest of row.

Так что я должен закончить с двумя словарями.Одного звали Джон Доу, а другого - Мэри Робинсон.

например:

MaryRobinson = {
  "date": "21/12/2018",
  "name": "Mary Robinson",
  "gender": "Female",
   "Address": "2 Lane St."
}

Возможно, мне лучше использовать список, так как я хочу сохранить возможность сохранения более одного адреса.

Я не понимаюкак динамически создать список из значения переменной.Я читал, что это плохая практика.

Примечание: назначение в колледж.

1 Ответ

0 голосов
/ 02 февраля 2019

Вы можете сделать это с exec, если хотите, но я не думаю, что это было бы действительно полезно в вашем случае (тогда вам придется оценивать строки имен каждый раз, когда вы хотите получить к ним доступ).Я бы посоветовал вам получить один «основной» словарь, в котором имена называются ключами, а словари - значениями.Это было бы что-то вроде (на самом деле это не было):

data = {}
names = []

for row in readFile:

    date = row[0]
    name = row[1]
    gender = row[2]
    address = row[3]

    names.append(name)

   if name not in names:
       data[name] = {"date":date, "gender":gender, "address":address}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...