基本上我有一个键列表:字典中的项目,我使用循环来找到与我得到的项匹配的键,并且我有每个键的函数。键虽然有编号,所以我需要取下最后一个号码。
这使得我需要从一个字符串中调用一个函数,如主题中的那个:
key[-1]()
key [-1]实际上是一个返回类似scalcs的字符串,这是我需要调用的函数的名称。
我四处搜寻并看过有关课程的内容。我很新,老实说从来没有使用过类,并且有很多代码和很多这些功能。如果可能的话,我宁愿不做那种方法。
d = {key1: item1, key2: item2, akey1: item3, akey2: item4, dkey1: item1, dkey2: item2}
当我的值与附加到字典中的键的值匹配时,我想调用key,akey或dkey。
所以我会像这样循环:
for key, value in d.items():
if id == value:
print key[:-1]
现在我只需要拨打那个键[: - 1]
答案 0 :(得分:1)
def hello_world():
print "hello world"
d = {'hello':hello_world}
d['hello']()
locals()['hello_world']()
答案 1 :(得分:0)
您可以尝试存储函数本身,而不是将函数的名称存储为字典的键:
>>> f = lambda x:x+1
>>> g = lambda x:x-1
>>> D = {f:'0', g:'1'}
>>> (F,) = [k for k,v in D.items() if v=="0"]
>>> F(3)
4
如果你需要将你的密钥保存为字符串,那么创建一个包含所有对应关系的第二个字典(key_as_string, corresponding_function)
,然后只需检索与你在上一步获得的密钥相对应的函数。
请注意,您需要非常小心,因为没有多个具有相同值的键,否则,您无法获得独特的功能。最安全的方法是构建一个包含所有内容的反向字典:(some_string_index, a_function)
。
另请注意,该函数只是一个对象:在上面的示例中,我使用了一些非常简单的东西,如lambda
,但您可以使用更复杂的东西:
def a_function(...):
...
your_dictionary = {a_function: your_index}
safer_dictionary = {your_index: a_function}
答案 2 :(得分:0)
我不完全确定我理解你的问题。以下是对的吗?
你有词典
d1 = {key1: item1, key2: item2, ...}
和
d2 = {key1: function1, key2: function2, ...}
如果有
item2
项,您想要找到function2
。
如果是这样,那么您应该以
的形式存储您拥有的不同信息d = {item1: function1, item2: function2, ...}
您想要的功能是d[item2]
。
要从d
和d1
生成d2
,您可以
d = {item: d2[key] for key, item in d1.items()}