将这个列表字典简化为包含 all/only 个唯一值的单个列表
Simplify this dictionary of lists into a single list containing all/only unique values
我有一个以列表作为值的字典,如下所示:
my_dict = {"a": [1, 6, 8, 4],
"b": [2, 7, 4, 9, 13],
"c": [9, 5, 6, 8, 11]
}
我想要的是一个列表,其中包含字典列表中的每个唯一项。
所以,my_list
应该是 [1, 6, 8, 4, 2, 7, 9, 13, 5, 11]
。我不关心顺序。
我是这样做的:
my_list = []
for k in my_dict:
for item in my_dict[k]:
if item not in my_list:
my_list.append(item)
这可行,但我觉得有更优雅的解决方案,也许使用列表理解。
您可以:
- 迭代字典。
- 将列表值扩展到列表变量。
- 使用 set 方法删除重复项。
代码:
>>> my_dict = {"a": [1, 6, 8, 4],
... "b": [2, 7, 4, 9, 13],
... "c": [9, 5, 6, 8, 11]
... }
>>> my_list = []
>>> for k, v in my_dict.items():
... my_list.extend(v)
...
>>> my_list
[1, 6, 8, 4, 9, 5, 6, 8, 11, 2, 7, 4, 9, 13]
>>> my_list = list(set(my_list))
>>> my_list
[1, 2, 4, 5, 6, 7, 8, 9, 11, 13]
>>>
通过集合运算。
>>> my_list = set()
>>> for i in my_dict.values():
... my_list.update(i)
...
set([1, 2, 4, 5, 6, 7, 8, 9, 11, 13])
>>>
使用sets;您可以生成所有值的并集:
set().union(*my_dict.values())
演示:
>>> my_dict = {"a": [1, 6, 8, 4],
... "b": [2, 7, 4, 9, 13],
... "c": [9, 5, 6, 8, 11]
... }
>>> set().union(*my_dict.values())
set([1, 2, 4, 5, 6, 7, 8, 9, 11, 13])
集没有顺序(就像字典键是无序的),但你说你不关心输出的顺序。
我有一个以列表作为值的字典,如下所示:
my_dict = {"a": [1, 6, 8, 4],
"b": [2, 7, 4, 9, 13],
"c": [9, 5, 6, 8, 11]
}
我想要的是一个列表,其中包含字典列表中的每个唯一项。
所以,my_list
应该是 [1, 6, 8, 4, 2, 7, 9, 13, 5, 11]
。我不关心顺序。
我是这样做的:
my_list = []
for k in my_dict:
for item in my_dict[k]:
if item not in my_list:
my_list.append(item)
这可行,但我觉得有更优雅的解决方案,也许使用列表理解。
您可以:
- 迭代字典。
- 将列表值扩展到列表变量。
- 使用 set 方法删除重复项。
代码:
>>> my_dict = {"a": [1, 6, 8, 4],
... "b": [2, 7, 4, 9, 13],
... "c": [9, 5, 6, 8, 11]
... }
>>> my_list = []
>>> for k, v in my_dict.items():
... my_list.extend(v)
...
>>> my_list
[1, 6, 8, 4, 9, 5, 6, 8, 11, 2, 7, 4, 9, 13]
>>> my_list = list(set(my_list))
>>> my_list
[1, 2, 4, 5, 6, 7, 8, 9, 11, 13]
>>>
通过集合运算。
>>> my_list = set()
>>> for i in my_dict.values():
... my_list.update(i)
...
set([1, 2, 4, 5, 6, 7, 8, 9, 11, 13])
>>>
使用sets;您可以生成所有值的并集:
set().union(*my_dict.values())
演示:
>>> my_dict = {"a": [1, 6, 8, 4],
... "b": [2, 7, 4, 9, 13],
... "c": [9, 5, 6, 8, 11]
... }
>>> set().union(*my_dict.values())
set([1, 2, 4, 5, 6, 7, 8, 9, 11, 13])
集没有顺序(就像字典键是无序的),但你说你不关心输出的顺序。