如何在python中创建包含多个键和对的字典?

如何在python中创建包含多个键和对的字典?,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,我有一个包含重复键和多个值对的列表,例如: abc abc.txt abc abc-xyz.jpg abc abc.978.png efg efg.txt efg efg-xyz.jpg efg efg.978.png 我想创建一本这样的词典 dict={'abc':'[“abc.txt”,“abc xyz.jpg”,“abc.978.png”],'efg':'[“efg.txt”,“efg xyz.jpg”,“efg.978.png”]} 我该怎么办 您可以使用defaultdict简单地执

我有一个包含重复键和多个值对的列表,例如:

abc abc.txt
abc abc-xyz.jpg
abc abc.978.png
efg efg.txt
efg efg-xyz.jpg
efg efg.978.png
我想创建一本这样的词典

dict={'abc':'[“abc.txt”,“abc xyz.jpg”,“abc.978.png”],'efg':'[“efg.txt”,“efg xyz.jpg”,“efg.978.png”]}


我该怎么办

您可以使用
defaultdict
简单地执行此操作

from collections import defaultdict
lines = string.split('\n')
d = defaultdict(list)
for line in lines:
    key, value = line.split(' ')
    d[key].append(value)

您需要使用空列表[]初始化每个键,然后在添加新项时使用append。 例如:

list = """abc abc.txt
abc abc-xyz.jpg
abc abc.978.png
efg efg.txt
efg efg-xyz.jpg
efg efg.978.png"""

dict = {}

for line in list.split('\n'):
    (key, value) = line.split(' ')
    if not key in dict:
        dict[key] = []
    dict[key].append(value)

print(dict)

您可以使用
itertools.groupby

import itertools
s = ['abc abc.txt', 'abc abc-xyz.jpg', 'abc abc.978.png', 'efg efg.txt', 'efg efg-xyz.jpg', 'efg efg.978.png']
new_s = [i.split() for i in s]
new_data = {a:[d for c, d in list(b)] for a, b in itertools.groupby(sorted(new_s, key=lambda x:x[0]), key=lambda x:x[0])}
输出:

{'abc': ['abc.txt', 'abc-xyz.jpg', 'abc.978.png'], 'efg': ['efg.txt', 'efg-xyz.jpg', 'efg.978.png']}

欢迎来到SO。请花点时间阅读它所包含的链接。