Python 创建一个for循环,检查元素是否在字典中

Python 创建一个for循环,检查元素是否在字典中,python,python-3.x,for-loop,Python,Python 3.x,For Loop,我试图构造一个for循环,它检查元素是否在字典中 dict={} 如果dict中的元素1: dict[element1]。添加(element2) elif元素1不在dict中: dict[element1]=set().add(element2) dict中的elif元素2: dict[element2]。添加(element1) elif要素2不在dict中: dict[element2]=set().add(element1) 我想要得到的字典具有以下数据结构:; dict={eleme

我试图构造一个for循环,它检查元素是否在字典中

dict={}
如果dict中的元素1:
dict[element1]。添加(element2)
elif元素1不在dict中:
dict[element1]=set().add(element2)
dict中的elif元素2:
dict[element2]。添加(element1)
elif要素2不在dict中:
dict[element2]=set().add(element1)
我想要得到的字典具有以下数据结构:;
dict={element 1:{element 2,element 3},element 2:{element 3,element 1},…}
(因此,在字典中设置)。

看起来您只是在寻找一种方法,将元素添加到字典中的集合中,如果该集合还不存在,则创建该集合。您可以使用DefaultDict为您执行此操作

from collections import defaultdict
dict = defaultdict(set)
edges = [("element1", "element2"), ("element3", "element1"), ("element4", "element2")]
for edge in edges:
    dict[edge[0]].add(edge[1])
    dict[edge[1]].add(edge[0]) # Remove if graph is directed
给出:

{
  'element1': {'element3', 'element2'},
  'element2': {'element4', 'element1'},
  'element3': {'element1'},
  'element4': {'element2'}
}
这是我的最终代码

elements = [("value1", "value2"), ("value3", "value4"), ("value4", "value2")]
sorted_elements = {}

for element1, element2 in elements:
    sorted_elements.setdefault(element1, set()); sorted_elements.setdefault(element2, set())
    sorted_elements[element1].add(element2); sorted_elements[element2].add(element1)

print(sorted_elements)
它将输出

{'element1':{'element2','element3'},'element2':{'element1','element4'},'element3':{'element1'},'element4':{'element2'}

那么您想从(v1,v2)图边元组列表或其他东西中构建此dict吗?您的第二个和第三个elif语句是不可访问的。你能提供一个更好的例子吗?如果我运行上面的代码,我会得到
{element1:{element2},element2:{element1}}
@Ry-是的!原始数据具有以下结构:<代码>[(元素1,元素2),(元素3,元素1),(元素4,元素2)]。所以,我猜是对它们进行排序。你也可以在边上解压a,b的
,以便能够写入
dict[a]。添加(b)
dict[b]。添加(a)
。(另一个旁白是:
dict
对于dict来说是一个容易混淆的变量名,因为它也是dict的类型。)