Muk*_*rma 1 python dictionary list
我有一个列表,其中有多个作为元组存储在列表中的元素,我想创建一个字典,其中键的长度为1,2等,而各个长度的元素。清单的例子是
combination = [('A',), ('B',), ('C',), ('D',), ('A', 'B'), ('A','C'),
('A', 'D'), ('B', 'C'), ('B', 'D'), ('C', 'D'), ('A', 'B', 'C'),
('A', 'B', 'D'), ('A', 'C', 'D'), ('B', 'C', 'D'),('A', 'B', 'C', 'D')]
Run Code Online (Sandbox Code Playgroud)
我试过了
temp_dict = {len(i): i for i in combinations}
所需的输出是
{1: [('A',), ('B',), ('C',), ('D',)], 2: [('A', 'B'), ('A','C'),
('A', 'D'), ('B', 'C'), ('B', 'D'), ('C', 'D')], 3: [('A', 'B', 'C'),
('A', 'B', 'D'), ('A', 'C', 'D'), ('B', 'C', 'D')], 4: [('A', 'B', 'C', 'D')]}```
Run Code Online (Sandbox Code Playgroud)
您可以尝试其中包含列表理解的字典理解
temp_dict = {len(i): [x for x in combination if len(x) == len(i)] for i in combination}
print(temp_dict)
Run Code Online (Sandbox Code Playgroud)
或者您可以使用setdefault
:
temp_dict = {}
for i in combination:
temp_dict.setdefault(len(i), []).append(i)
print(temp_dict)
Run Code Online (Sandbox Code Playgroud)
两者输出:
{1: [('A',), ('B',), ('C',), ('D',)], 2: [('A', 'B'), ('A', 'C'), ('A', 'D'), ('B', 'C'), ('B', 'D'), ('C', 'D')], 3: [('A', 'B', 'C'), ('A', 'B', 'D'), ('A', 'C', 'D'), ('B', 'C', 'D')], 4: [('A', 'B', 'C', 'D')]}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
60 次 |
最近记录: |