在 python 中将 frozenset 转换为字典
Convert a frozenset to a dictionary in python
我有以下 frozenset:
f_set = [frozenset({8, 14, 15, 18}), frozenset({1, 2, 3, 7, 8}), frozenset({0, 4, 5})]
我需要将f_set
转换成字典如下
- 对于第一组,我需要字典的值为 0。
- 对于第二组,我需要字典的值为 1。
- 对于第三组,我需要字典的值为 2。
现在,如果某些键存在于多个集合中,请为它们分配一个新值。在这种情况下,集合 1 和集合 2 中都存在 8,因此分配值 3。
dict1 = {8:3, 14:0, 15:0, 18:0, 1:1, 2:1, 3:1, 7:1, 0:2, 4:2, 5:2}
注意:我的实际 f_set
包含三组以上,所以我想避免手动进行。
你可以使用字典理解 enumerate
:
f_set = [frozenset({8, 14, 15, 18}), frozenset({1, 2, 3, 7, 8}), frozenset({0, 4, 5})]
dict1 = {x: i for i, s in enumerate(f_set) for x in s}
print(dict1)
# {8: 1, 18: 0, 14: 0, 15: 0, 1: 1, 2: 1, 3: 1, 7: 1, 0: 2, 4: 2, 5: 2}
请注意,如果集合不是相互不相交的,一些键将被丢弃,因为字典不能有重复的键。
您可以简单地循环 frozensets 以在输出字典中设置它们中的每一个:
output = dict()
for i in range(len(f_set)):
for s in f_set[i]:
output[s] = i
请注意,虽然顺序可能与您的顺序不同,但字典中的顺序应该无关紧要。
我有以下 frozenset:
f_set = [frozenset({8, 14, 15, 18}), frozenset({1, 2, 3, 7, 8}), frozenset({0, 4, 5})]
我需要将f_set
转换成字典如下
- 对于第一组,我需要字典的值为 0。
- 对于第二组,我需要字典的值为 1。
- 对于第三组,我需要字典的值为 2。
现在,如果某些键存在于多个集合中,请为它们分配一个新值。在这种情况下,集合 1 和集合 2 中都存在 8,因此分配值 3。
dict1 = {8:3, 14:0, 15:0, 18:0, 1:1, 2:1, 3:1, 7:1, 0:2, 4:2, 5:2}
注意:我的实际 f_set
包含三组以上,所以我想避免手动进行。
你可以使用字典理解 enumerate
:
f_set = [frozenset({8, 14, 15, 18}), frozenset({1, 2, 3, 7, 8}), frozenset({0, 4, 5})]
dict1 = {x: i for i, s in enumerate(f_set) for x in s}
print(dict1)
# {8: 1, 18: 0, 14: 0, 15: 0, 1: 1, 2: 1, 3: 1, 7: 1, 0: 2, 4: 2, 5: 2}
请注意,如果集合不是相互不相交的,一些键将被丢弃,因为字典不能有重复的键。
您可以简单地循环 frozensets 以在输出字典中设置它们中的每一个:
output = dict()
for i in range(len(f_set)):
for s in f_set[i]:
output[s] = i
请注意,虽然顺序可能与您的顺序不同,但字典中的顺序应该无关紧要。