首页 > 解决方案 > 如何从python中的多个键中获取值

问题描述

d = {"AUG":"M",
("UAA","UAG","UGA"):'',
("GCU","GCC","GCA","GCG"):"A",
("CGU","CGC","CGA","CGG","AGA","AGG"):"R",
("AAU","AAC"):"N",
("GAU","GAC"):"D",
("UGU","UGC"):"C",
("UCU","UCC","UCA","UCG","AGU","AGC"):"S",
("CCU","CCC","CCA","CCG"):"P",
("ACU","ACC","ACA","ACG"):"T",
("GUU","GUC","GUA","GUG"):"V",
("UUA","UUG","CUU","CUC","CUA","CUG"):"L",
("AUU","AUC","AUA"):"I",
("UUU","UUC"):"F",
("UAU","UAC"):"Y",
("CAU","CAC"):"H",
("CAA","CAG"):"Q",
("AAA","AAG"):"K",
("GAA","GAG"):"E",
"UGG":"W",
("GGU","GGC","GGA","GGG"):"G"}

对于上面的字典,如果我尝试通过说 来访问值“S” d["AGC"],编译器会给我一个关键错误。我试图在这里查看其他问题,但找不到答案。

错误:

Traceback (most recent call last):   File "p_synt.py", line 94, in <module>
    print(d[str[:3]]) KeyError: 'AGC'

标签: pythonpython-3.xdictionary

解决方案


如果您需要能够通过其 3 位数代码检索项目,您可以按照以下方式进行操作。

 def find_value(d, key):
    # check if complete key
    if key in d:
        return d[key]

    # check if in a key list
    for k, v in d.items():
        if isinstance(k, tuple) and key in k:
            return d[k]

用法

print(find_value(d, "AGC"))  
>>> S
print(find_value(d, "UGG"))
>>> W

推荐阅读