Как с 2 списков строк сделать словарь?

Мне нужно с 2 списков сделать 1 словарь с 2х функций я получил по списку строк:

Первый:['J. D. Salinger', 'J. R. R. Tolkien', 'T. S. Eliot', 'Wilkie Collins', 'James Joyce', 'Lewis Carroll', 'Rudyard Kipling', 'Edgar Allan Poe', 'George Orwell', 'Lewis Carroll']

Второй: ['1st January 1919', '3rd January 1892', '4th January 1965', '8th January 1824', '13th January 1941', '14th January 1898']

Из них мне нужно сделать словарь, вот в таком формате: [{"name": "J. D. Salinger", "date": "01/01/1919"}]

Я попытался написать следующее:

def dict_names_data():
    dict_names_data = []
    key1 = "name"
    value1 = dict_names()
    key2 = "date"
    value1 = dict_data()
    for element in dict_names():
        dict_names_data.append({
            key1: value1,
            key2: value2
        })
    return dict_names_data

но выбило ошибку. Как правильно создать словарь? и как исправить формат даты без вызова доп. библиотек?


Ответы (2 шт):

Автор решения: Zhihar

А так устроит?

names = ['J. D. Salinger', 'J. R. R. Tolkien', 'T. S. Eliot', 'Wilkie Collins', 'James Joyce', 'Lewis Carroll', 'Rudyard Kipling', 'Edgar Allan Poe', 'George Orwell', 'Lewis Carroll']

dates = ['1st January 1919', '3rd January 1892', '4th January 1965', '8th January 1824', '13th January 1941', '14th January 1898']

def date2date(text):
    parts = text.split()
    months = {
        'January': 1,
    }
    res = f'{int(parts[0][:-2]):02d}/{months[parts[1]]:02d}/{int(parts[2][-2:]):02d}'
    return res


# сам код
dictionary = [{'name': obj[0], 'date': date2date(obj[1])} for obj in zip(names, dates)]

print(dictionary)

функцию date2date я в лоб написал, но наверное есть что-то в библиотеке datetime, просто я не знаю

→ Ссылка
Автор решения: Pavel Durmanov
In [28]: import re

In [29]: import datetime

In [30]: pattern = re.compile(r"(\d+)([a-z]{2})")

In [31]: date_format = "%d %B %Y"

In [32]: results = []

In [33]: for name, date in zip(names, dates):
    ...:     date = pattern.sub(r"\1", date)
    ...:     date = datetime.datetime.strptime(date, date_format)
    ...:     date = date.strftime("%d/%m/%Y")
    ...:     results.append({"name": name, "date": date})
    ...:

In [34]: results
Out[34]:
[{'name': 'J. D. Salinger', 'date': '01/01/1919'},
 {'name': 'J. R. R. Tolkien', 'date': '03/01/1892'},
 {'name': 'T. S. Eliot', 'date': '04/01/1965'},
 {'name': 'Wilkie Collins', 'date': '08/01/1824'},
 {'name': 'James Joyce', 'date': '13/01/1941'},
 {'name': 'Lewis Carroll', 'date': '14/01/1898'}]
→ Ссылка