因此,我有一个要查询的用户首选项字典,以查看列表中是否存在所有字典值。
例如,我有一个类似的字典:
dct = { 'key1' : 'value1', 'key2' : 'value2'}
我有一个像这样的列表:
lst = ['list1', 'list2', 'list3', 'list4']
我正在尝试检查字典中的所有值是否都在列表中。
我该怎么做?
编辑更具体:
我的字典是
userprefs = {'RON' : 'PHX'}
我的清单是
poss_matches = [['misc0', 'misc1', 'misc2', 'misc3', 'misc4', 'misc5', 'misc6', 'misc7', 'PHX-']]
但是,如果我使用类似的东西:
for seq in poss_matches:
for p in userprefs:
if userprefs[p] in seq:
matches.append(seq)
我得到一个空的比赛清单。
答案 0 :(得分:2)
您需要all()
和for loop
dct = { 'key1' : 'list1', 'key2' : 'list2','k3':'list3','k4':'list4'}
lst = ['list1', 'list2', 'list3', 'list4']
all(x in lst for x in dct.values())
输出:
True
答案 1 :(得分:1)
您可以尝试以下方法:
def checker():
for value in dct.values():
if value in lst:
continue
else:
return False
return True
dct = { 'key1' : 'list1', 'key2' : 'list1'}
lst = ['list1', 'list2', 'list3', 'list4']
print(checker())
通过这种方式,您将从值变量的字典中获取值,并检查其是否存在于列表中。
答案 2 :(得分:1)
方法1:
myDict = { 'key1' : 'value1', 'key2' : 'value2'}
values_myDict = myDict.values() # Outputs all the values of a dictionary in a list.
values_myDict
['value1', 'value2']
# Use set() - In case myList has all the values of the dictionary, we will get True, else False
myList = ['list1', 'list2', 'list3', 'list4', 'value1', 'value2']
bool_value = set(values_myDict) < set(myList)
bool_value
True # because both 'value1' & 'value2' are presnt.
myList = ['list1', 'list2', 'list3', 'list4', 'value1',]
bool_value = set(values_myDict) < set(myList)
bool_value
False # because 'value2' is not present.
方法2:,如 Jon Clements 所建议。更加简洁明了。
myDict = { 'key1' : 'value1', 'key2' : 'value2'}
myList = ['list1', 'list2', 'list3', 'list4', 'value1', 'value2']
bool_value = set(myDict.values()).issubset(myList)
bool_value
True
myList = ['list1', 'list2', 'list3', 'list4', 'value1']
bool_value = set(myDict.values()).issubset(myList)
bool_value
False
答案 3 :(得分:-1)
您可以尝试以下方法
dct = { 'key1' : 'list1', 'key2' : 'list3'}
lst = ['list1', 'list2', 'list3', 'list4']
flag='N'
for each in dct:
if dct[each] in lst:
flag='Y'
else:
flag='N'
print (flag)