gpt4 book ai didi

python - 集合元素的组合

转载 作者:行者123 更新时间:2023-12-01 02:53:31 25 4
gpt4 key购买 nike

我有一本字典。

d = {
'Cause Class': {'CC1', 'CC2'},
'Cause Type': {'Ct1', 'Ct2', 'Ct3', 'Ct4'},
'Incident Type': {'It1', 'It2', 'It3'}
}

我想找到两个元素的组合,其中每个元素必须来自字典的不同键。

例如:('CC​​1', '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]))))

但它给出了 ('CC​​1', 'Ct1')('Ct1', 'CC1') 作为两种不同的组合,但我只想要其中之一.

最佳答案

不要对键进行嵌套循环,而是将所有值传递给 itertools.combinations() ;它会选择给定长度的独特组合:

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')]

关于python - 集合元素的组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44485849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com