首页 > 解决方案 > 在python中列出字典

问题描述

我有这种类型的列表,我正在尝试将其转换为字典,但键正在重复,我无法这样做......

清单是这样的:


my_list = [['full name ',
  ' Arthur Schopenhauer',
  'date of birth ',
  ' Friday, February 22, 1788 (232 years ago)',
  'place of birth ',
  ' Gdansk, Pomorskie, Poland',
  'date of death ',
  ' Friday, September 21, 1860 (age: 72 years) ',
  'place of death ',
  ' Frankfurt, Hesse, Germany'],
 ['full name ',
  ' Aristotle',
  'date of birth ',
  ' 384 BC (2403 years ago)',
  'place of birth ',
  ' Halkidiki, Macedonia Central, Greece',
  'date of death ',
  ' 322 BC (age: 62 years) ',
  'place of death ',
  ' Evvoia, Greece Central, Greece']]

我试图得到类似的东西:

my_dict = {"full name": ['Arthur Schopenhauer', 'Aristotle'],
 "date of birth": [' Friday, February 22, 1788 (232 years ago)', '384 BC (2403 years ago)'],
 "place of birth": [...],
 "date of death": [...],
 "place of death": [...]}

你能帮我一些建议或意见吗?

标签: pythonlistloopsdictionary

解决方案


您可以将 adefaultdict与列表类型一起用作值,然后逐对 (key, value) 读取每个列表value并将listkey

from collections import defaultdict

result = defaultdict(list)
for values in my_list:
    for k, v in zip(values[::2], values[1::2]):
        result[k].append(v)

print(result)

给予

{
    "full name ": [
        " Arthur Schopenhauer",
        " Aristotle"
    ],
    "date of birth ": [
        " Friday, February 22, 1788 (232 years ago)",
        " 384 BC (2403 years ago)"
    ],
    "place of birth ": [
        " Gdansk, Pomorskie, Poland",
        " Halkidiki, Macedonia Central, Greece"
    ],
    "date of death ": [
        " Friday, September 21, 1860 (age: 72 years) ",
        " 322 BC (age: 62 years) "
    ],
    "place of death ": [
        " Frankfurt, Hesse, Germany",
        " Evvoia, Greece Central, Greece"
    ]
}

推荐阅读