3 回答
TA贡献1860条经验 获得超9个赞
如果您打算进行会员资格检查,最好将第二个更改list为 a 。set
这是一个简短的函数,可以做到这一点。
编辑:由于您以相反的方式进行操作,因此仅使用dict. set然而,首先将它们采用 a 的形式可能更有意义。Aset经过哈希处理,这意味着更快的查找时间。如果您的lists 很长,那么采用这种形式可以节省一些计算时间。
def get_key(dct, lst2):
# iterate through every key and list
for key, lst in dct.items():
# if all the list items are present in your second list
if all(i in lst for i in lst2):
return key
# default to returning None
return None
dct = {
"key1": ['item1', 'item2', 'item3'],
"key2": ['item2', 'item4', 'item5'],
"key3": ['item3', 'item6', 'item4']
}
lst = ['item2', 'item3']
print(get_key(dct, lst))
你出错的地方就在这里。
for elem2 in dict.keys():
if all(item in elem2 foritem in list2):
elem2是一个字符串键。item in elem2正在寻找键中的完整字符串。 dict.values()返回您可能正在查找的值或列表。
但是,dict.items()将键和值作为元组返回,这可能正是您所需要的。
TA贡献1850条经验 获得超11个赞
看这个
a = {'one':[1, 2, 3, 4], 'two':[5, 6, 7, 8], 'three':[9, 10]}
b = {'four':[1, 2, 3, 4], 'five':[6, 7, 8], 'six':[9, 10]}
for akey in a:
for bkey in b:
if a[akey] == b[bkey]:
print(akey, bkey)
输出:
one four
three six
TA贡献1936条经验 获得超6个赞
l=[i for i in your_dict if set(your_dict[i]).union(set(list2))==set(your_dict[i])]
print(l)
为了:
your_dict={
"key1": ['item1', 'item2', 'item3'],
"key2": ['item2', 'item4', 'item5'],
"key3": ['item3', 'item6', 'item4']
}
list2 = ['item2', 'item3']
输出是:
['key1']
添加回答
举报