[英]How to find matching value(dictionary) from an element(list), and printing corresponding match?
我找不到与所有字典(值)匹配的列表(元素)。 语法是什么?
我的目标是:无论列表中的任何元素,我都想找到字典中所有值的匹配项。 如果是这样,则打印相应的字典(键,值)并打印与之匹配的列表。
我指定了列表的any(elem)
以匹配字典的all(val)
值。
x = ['AL3G13280', 'AL3G13290']
y = {'Protein of unknown function (DUF784)': 'AL1006U10010', 'FK506- and rapamycin-binding protein 15 kD-2': 'AL3G13280', 'Werner syndrome-like exonuclease': 'AL7G42630'}
for elem in x:
for key, val in y.items():
if any(elem) == all(val):
print(key, val),
print(TandClustList)
我希望将其打印出来:
('FK506- and rapamycin-binding protein 15 kD-2', 'AL3G13280') [['AL3G13280', 'AL3G13290']]
这是ACTUAL印刷品:
('Werner syndrome-like exonuclease', 'AL7G42630') [['AL3G13280', 'AL3G13290']]
('Protein of unknown function (DUF784)', 'AL1006U10010') [['AL3G13280', 'AL3G13290']]
('FK506- and rapamycin-binding protein 15 kD-2', 'AL3G13280') [['AL3G13280', 'AL3G13290']]
如何获得所需的预期打印结果?
您误会了all()
和any()
的目的。 我认为这里不是必需的,但有一个简短的解释:
all()
返回True,否则返回False。 any()
返回True,否则返回False。 因此,如果在字符串上调用all()
,则结果应始终为True,因为字符串的每个“元素”都是另一个包含单个字符的字符串(如果字符串为空,则其结果为false)。 在字符串为空的特殊情况下, all()
仍返回True。
同样,如果在字符串上调用any()
,则结果应始终为True,但空字符串除外,在这种情况下,它将返回False。
在您的示例中,您应该通过简单地删除对all()
和any()
的调用来获得所需的输出,如下所示:
for elem in x:
for key, val in y.items():
if elem == val:
print(key, val),
print(TandClustList)
不用简单地使用all()
或any()
就可以:
x = ['AL3G13280', 'AL3G13290']
y = {'Protein of unknown function (DUF784)': 'AL1006U10010', 'FK506- and rapamycin-binding protein 15 kD-2': 'AL3G13280', 'Werner syndrome-like exonuclease': 'AL7G42630'}
for key, val in y.items():
if val in x:
print(key,val)
print(TandClustList)
使用字典理解
x = ['AL3G13280', 'AL3G13290']
y = {'Protein of unknown function (DUF784)': 'AL1006U10010', 'FK506- and rapamycin-binding protein 15 kD-2': 'AL3G13280', 'Werner syndrome-like exonuclease': 'AL7G42630'}
print({ key:val for(key, val) in y.items() if val in x})
print(TandClustList)
输出:
('FK506- and rapamycin-binding protein 15 kD-2', 'AL3G13280')
[['AL3G13280', 'AL3G13290']]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.