Python 集合元素的组合
我有一本字典Python 集合元素的组合,python,dictionary,set,combinations,Python,Dictionary,Set,Combinations,我有一本字典 d = { 'Cause Class': {'CC1', 'CC2'}, 'Cause Type': {'Ct1', 'Ct2', 'Ct3', 'Ct4'}, 'Incident Type': {'It1', 'It2', 'It3'} } 我想找到两个元素的组合,其中每个元素必须来自dict的不同键 例如:('CC1','Ct1')就是这样的组合,而('Ct1','Ct2')不是这样的组合 我试过这个 ksgg = [] for i in d:
d = {
'Cause Class': {'CC1', 'CC2'},
'Cause Type': {'Ct1', 'Ct2', 'Ct3', 'Ct4'},
'Incident Type': {'It1', 'It2', 'It3'}
}
我想找到两个元素的组合,其中每个元素必须来自dict的不同键
例如:('CC1','Ct1')
就是这样的组合,而('Ct1','Ct2')
不是这样的组合
我试过这个
ksgg = []
for i in d:
#print(i)
for j in d:
if i != j:
ksgg.append(list(set(it.product(d[i],d[j]))))
但它将
('CC1','Ct1')
和('Ct1','CC1')
作为两个不同的组合,但我只想要其中一个。将所有值传递给;它将选择给定长度的唯一组合:
from itertools import combinations, product
ksgg = []
for set1, set2 in combinations(d.values(), 2):
ksgg += product(set1, set2)
对于给定词典,将创建以下组合:
>>> from itertools import combinations, product
>>> for set1, set2 in combinations(d, 2):
... print(set1, set2, sep=' - ')
...
Cause Class - Cause Type
Cause Class - Incident Type
Cause Type - Incident Type
配对的确切顺序因字典顺序而异
完整演示:
>>> ksgg = []
>>> for set1, set2 in combinations(d.values(), 2):
... ksgg += product(set1, set2)
...
>>> from pprint import pprint
>>> pprint(ksgg)
[('CC1', 'Ct4'),
('CC1', 'Ct2'),
('CC1', 'Ct1'),
('CC1', 'Ct3'),
('CC2', 'Ct4'),
('CC2', 'Ct2'),
('CC2', 'Ct1'),
('CC2', 'Ct3'),
('CC1', 'It2'),
('CC1', 'It1'),
('CC1', 'It3'),
('CC2', 'It2'),
('CC2', 'It1'),
('CC2', 'It3'),
('Ct4', 'It2'),
('Ct4', 'It1'),
('Ct4', 'It3'),
('Ct2', 'It2'),
('Ct2', 'It1'),
('Ct2', 'It3'),
('Ct1', 'It2'),
('Ct1', 'It1'),
('Ct1', 'It3'),
('Ct3', 'It2'),
('Ct3', 'It1'),
('Ct3', 'It3')]
谢谢这正是我想要的。