Python 创建一个for循环,检查元素是否在字典中
我试图构造一个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
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的类型。)