Нужна помощь в передаче метки времени в словарь правильно - PullRequest
0 голосов
/ 04 ноября 2019

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

Все работает нормально, но меня смущает создание ключа, который хранит дату и время, когда словарь хранился внутри цикла while.

from datetime import datetime

now = datetime.now()
user_list = {}
list_of_users = {}

while True: 

    print("Please enter your desired username below")
    username = input("What is your username? ")

    if username == 'print':
        break

    else:
        first = input("What is your first name? ")

        list_of_users.update({username : user_list})
        user_list['given name'] = first
        user_list['given name'] = username
        user_list['date'] = now.strftime("%Y-%m-%d %H:%M:%S")

print(list_of_users)

Вот примервыход. Как вы можете видеть, значение даты для словаря имеет одинаковое точное время. Я хотел бы, чтобы время основывалось на времени, в которое данные были сохранены в цикле while:

Please enter your desired username below
What is your username? monkey
What is your first name? john
Please enter your desired username below
What is your username? simon
What is your first name? whistler
Please enter your desired username below
What is your username? print
{'monkey': {'given name': 'simon', 'date': '2019-11-04 13:16:35'}, 'simon': {'given name': 'simon',     'date': '2019-11-04 13:16:35'}}

Спасибо за помощь заранее!

Ответы [ 2 ]

0 голосов
/ 04 ноября 2019

Вы инициализировали переменную сейчас в начале кода и используете ее в цикле while.

Если вы хотите корректный вывод, вам нужно удалить

now = datetime.now()

И используйте

user_list['date'] = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
0 голосов
/ 04 ноября 2019

Вам нужно создать now отдельно в каждой итерации. Прямо сейчас вы создаете объект даты только в начале вашей программы, поэтому он остается неизменным до конца выполнения.

from datetime import datetime

user_list = {}
list_of_users = {}

while True: 

  print("Please enter your desired username below")
  username = input("What is your username? ")

  if username == 'print':
    break
  else:
    first = input("What is your first name? ")
    now = datetime.now()
    list_of_users.update({username : user_list})
    user_list['given name'] = first
    user_list['given name'] = username
    user_list['date'] = now.strftime("%Y-%m-%d %H:%M:%S")

    print(list_of_users)
...