У меня есть этот массив словарей на питоне.
array_dict = [
{'Name': 'John', 'Date': '2/18/1998', 'Pay': 21.63},
{'Name': 'John', 'Date': '7/7/1999', 'Pay': 15.87}
]
Я хочу преобразовать каждую пару ключей даты в словаре, чтобы она выглядела так:
out_dict = [
{'Name': 'John', 'Date': '18-02-1998', 'Pay': 21.63},
{'Name': 'John', 'Date': '07-07-1999', 'Pay': 15.87}
]
Я знаю, как преобразовать дату. Код для выполнения преобразования выглядит следующим образом;
datetime.strptime(date_str, "%m/%d/%Y").strftime("%d-%m-%Y")
где date_str
содержит строку даты, например '2/18/1998'
.
Как применить этот код преобразования ко всем парам в словаре?
Если на самом деле есть только эти три ключа, вы можете использовать понимание списка:
out_dict = [
{
'Name': d['Name'],
'Pay': d['Pay'],
'Date': datetime.strptime(d['Date'], "%m/%d/%Y").strftime("%d-%m-%Y"),
} for d in array_dict
]
В противном случае я бы скопировал его и изменил в цикле:
out_dict = []
for d in array_dict:
out_dict.append(dict(d)) # make a copy
out_dict[-1]['Date'] = datetime.strptime(d['Date'], "%m/%d/%Y").strftime("%d-%m-%Y")
Использование dict.update
Бывший:
import pprint
from datetime import datetime
array_dict = [
{'Name': 'John', 'Date': '2/18/1998', 'Pay': 21.63},
{'Name': 'John', 'Date': '7/7/1999', 'Pay': 15.87}
]
for i in array_dict:
i.update({"Date": datetime.strptime(i["Date"], "%m/%d/%Y").strftime("%d-%m-%Y") })
pprint.pprint(array_dict)
Выход:
[{'Date': '18-02-1998', 'Name': 'John', 'Pay': 21.63},
{'Date': '07-07-1999', 'Name': 'John', 'Pay': 15.87}]
Я заметил, что вы используете pprint. Для меня это в новинку. Является ли хорошей практикой все время заменять print на pprint? Кажется, pprint лучше. Бывают ли ситуации, когда печать все же лучше, чем pprint?