可以在Python中检查项目是否在字典项目中,如下所示:
for x in rows:
print(x.items())
for item in seq.items():
print(item)
if item in x.items():
print("got it")
行:[{'name': 'Alice', 'AGATC': '2', 'AATG': '8', 'TATC': '3'}, {'name': 'Bob', 'AGATC' : '4', 'AATG': '1', 'TATC': '5'}, {'姓名': '查理', 'AGATC': '3', 'AATG': '2', 'TATC' : '5'}]
序列:{'AGATC':4,'AATG':1,'TATC':5}
我知道我可以检查值是否存在,但我想检查整个项目是否存在。这将是更简单的方法。
假设您只想循环遍历行,然后循环遍历您正在查找的项目并检查这些项目中是否有任何一个在一行中......是的,这很有可能:
rows = [{'name': 'Alice', 'AGATC': '2', 'AATG': '8', 'TATC': '3'},
{'name': 'Bob', 'AGATC': '4', 'AATG': '1', 'TATC': '5'},
{'name': 'Charlie', 'AGATC': '3', 'AATG': '2', 'TATC': '5'}]
seq = {'AGATC': '4', 'AATG': '1', 'TATC': '5'}
for row in rows:
if any(row.get(key) == value for key, value in seq.items()):
print("Got it")
通过这种方式,您可以选择一行并检查是否可以在该行中找到
seq
中的任何项目。发现本身会检查整个项目是否存在,就像您想要的那样,首先调用 row.get(key)
(并首先检查它们的键是否存在),然后将其与您希望它相等的值进行比较。
我们很幸运
.get()
如果键在字典中,则返回键的值,否则返回默认值。如果未给出默认值,则默认为 None,因此该方法永远不会引发 KeyError。
因此,在比较不存在的键的值时,您无需担心崩溃。
除了
any()
之外,您还可以保留第二个循环,并准确地知道找到了哪个项目(如果您关心该信息)。