Обновление значения dict без слишком большого количества копий предметов

1

У меня есть следующие данные о работе,
один из них является

   job_detail = {
        "company": "abc company recruit",
        "job_title": "python developer",
        "job_request": "20k-40k /Delhi / 3-5years / Bachelor / Full-time",
        "job_tags": "Big Data\nSoftware Development",
        "pub_date": "10:19  published from network",
}

Я попытался извлечь и отформатировать его с помощью следующего кода:

job_detail["company"] = job_detail["company"].replace("recruit", "").strip()
job_detail["job_title"] = job_detail["job_title"].strip()
job_request = [jr.strip() for jr in job_detail["job_request"].split("/")]
salary, location, experience, education, time = job_request
job_detail['salary'] = salary
job_detail['location'] = location
job_detail['experience'] = experience
job_detail["education"] = education
job_detail['time'] = time
job_detail["job_tags"] = job_detail["job_tags"].replace("\n", ",")
job_detail['pub_date'] = re.search(r"\w+", job_detail["pub_date"]).group()

Запустите его

In [81]: job_detail
Out[81]: 
{'company': 'abc company',
 'job_title': 'python developer',
 'job_request': '20k-40k /Delhi / 3-5years / Bachelor / Full-time',
 'job_tags': 'Big Data,Software Development',
 'pub_date': '10',
 'salary': '20k-40k',
 'location': 'Delhi',
 'experience': '3-5years',
 'education': 'Bachelor',
 'time': 'Full-time'}

Я получаю желаемые данные со слишком большим количеством ввода "job_details", и каждый элемент должен быть скопирован на каждую строку.

Как я могу решить проблему элегантным способом?

Теги:

2 ответа

2
Лучший ответ

Используйте zip для создания пары ключей, значений и используйте dict.update для обновления dict

>>> keys=["salary", "location", "experience", "education", "time"]
>>> pairs = zip(keys, map(str.strip, job_detail["job_request"].split("/")))
>>> job_detail.update(pairs)
>>> pprint(job_detail)
{'company': 'abc company recruit',
 'education': 'Bachelor',
 'experience': '3-5years',
 'job_request': '20k-40k /Delhi / 3-5years / Bachelor / Full-time',
 'job_tags': 'Big Data\nSoftware Development',
 'job_title': 'python developer',
 'location': 'Delhi',
 'pub_date': '10:19  published from network',
 'salary': '20k-40k',
 'time': 'Full-time'}
1

Для более простых вы можете попробовать что-то вроде этого

job_detail = {
    "company": "abc company recruit",
    "job_title": "python developer",
    "job_request": "20k-40k /Delhi / 3-5years / Bachelor / Full-time",
    "job_tags": "Big Data\nSoftware Development",
    "pub_date": "10:19  published from network",
}
salary, location, experience, education, time1 = 0,0,0,0,0
keys=["salary", "location", "experience", "education", "time1"]
for key in keys:
    job_detail[key]=eval(key)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню