Pos*_*kaz 1 python dictionary list set
我想通过列表中的值过滤字典元素:
s_list = ['blue','white']
dict_set = {'A':{'red','orange','blue','white'},'B':set(),'C':{'white','green','yellow','blue'},'D':set(),'E':set()}
Run Code Online (Sandbox Code Playgroud)
dict_set 的输出将是:
dict_set = {'A':{'blue','white'},'B':set(),"C":{'white','blue'},'D':set(),'E':set()}}
Run Code Online (Sandbox Code Playgroud)
(空集可以留在那里,只有过滤集有值)
我试图做的实现结果是空集:
for a,b in dict_set.items():
dict_set[a] = set([x for x in a if b in s_list])
Run Code Online (Sandbox Code Playgroud)
您可以从列表中创建一个集合,并与字典中的值相交:
s_list = ['blue','white']
dict_set = {'A':{'red','orange','blue','white'},'B':set(),'C':{'white','green','yellow','blue'},'D':set(),'E':set()}
set_list = set(s_list)
{k:v & set_list for k, v in dict_set.items()}
Run Code Online (Sandbox Code Playgroud)
输出:
{'A': {'blue', 'white'},
'B': set(),
'C': {'blue', 'white'},
'D': set(),
'E': set()}
Run Code Online (Sandbox Code Playgroud)
如果你不想要空的,你可以用类似的东西过滤那些:
{k:v & set_list for k, v in dict_set.items() if v & set_list}
# {'A': {'blue', 'white'}, 'C': {'blue', 'white'}}
Run Code Online (Sandbox Code Playgroud)