如何在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。请花点时间阅读它所包含的链接。