如标题所示,如果我有一个包含键和值的字典(其中这些值是集合),其中所有键的值都已经有一个来自列表的元素,它们会继续前进,看看是否可以将下一个元素添加到集合中。
例如,lst =['a','b','v']
lst = ['a', 'b', 'v']
sample_dct = {'test': {'a'}, 'letter': {'a'}, 'other': {'a'}}
other_dct = {'test': {'a'}, 'letter': {'a'}, 'other': {'g'}}
test_dct = {'test': {'a', 'b'}, 'letter': {'a', 'b'}, 'other': {'a'}}
这些字典将成为:
sample_dct = {'test': {'a', 'b'}, 'letter': {'a', 'b'}, 'other': {'a', 'b'}}
other_dct = {'test': {'a'}, 'letter': {'a'}, 'other': {'g', 'a'}}
test_dct = {'test': {'a', 'b'}, 'letter': {'a', 'b'}, 'other': {'a', 'b'}}
我尝试了以下方法:
lst = ['a', 'b', 'v']
other_dct = {'test': {'a'}, 'letter': {'a'}, 'other': {'g'}}
j = 0
for i in other_dct:
while not j == len(lst) - 1:
if not lst[j] in other_dct[i]:
x = other_dct[i]
x.add(lst[j])
other_dct[i] = x
break
else:
j += 1
j = 0
print(other_dct)
它将打印{'test':'b','a'},'字母':'b'、'a'}、'其他':{'a',' g '}}
我知道如何只添加一个元素一次到集合,但我仍然困惑如何只添加'b',如果第三个关键字已经有'a'
我正在考虑把这个列表变成一个字典,类似于它被添加到的字典,方法是把键变成值,它们被添加到一个集合,如下所示:新的dct ={'a':{'测试','字母','其他},' b '::{'测试','字母'},'v':设置()}
但我不确定这会不会让事情复杂化。
1条答案
按热度按时间dgsult0t1#
你可以使用python的
all
函数来测试所有的值是否都包含列表项,如果没有,那么这个项就可以添加到所有的值中(因为它是一个集合,重复并不重要),然后返回,否则就移到列表中的下一个字母。