Python查找对,相同的值

2024-04-20 05:17:55 发布

您现在位置:Python中文网/ 问答频道 /正文

这对别人来说可能是个简单的问题,但对我来说现在很困难。我有这本字典:

{
  "first": {"a", "b"},
  "second": {"a", "c"},
  "third": {"b"}, 
  "fourth": {"b"},
  "fifth": {"c"},
}

我要做的是把它整理成一个新的字典,其中包含了集合和这些集合中的成对键。示例:

{("first", "second"),("first", "third"), ("first", "fourth"), ("second", "fifth")}

第一对应该是第一和第二对,因为它们都有“a”,第二对应该是第一和第三对,因为它们都包含“b”,依此类推。。。你知道吗

我的想法是采取第一个关键点,并与其他比较,并存储在一套结果,做下一个。。。但我似乎无法理清逻辑。你们对我该怎么做有什么建议吗?你知道吗


Tags: 示例字典逻辑整理建议first关键点second
1条回答
网友
1楼 · 发布于 2024-04-20 05:17:55

一条直线可解。combinations(d.keys(), 2)创建键对,然后使用集合理解来保持值具有非空交集的键对。你知道吗

from itertools import combinations

d = {
  "first": {"a", "b"},
  "second": {"a", "c"},
  "third": {"b"},
  "fourth": {"b"},
  "fifth": {"c"},
}

print({(key1, key2) for key1, key2 in combinations(d.keys(), 2) if d[key1] & d[key2]})
# {('first', 'third'), ('third', 'fourth'), ('second', 'fifth'),
#  ('first', 'fourth'), ('first', 'second')}

相关问题 更多 >