【发布时间】:2014-04-08 03:36:19
【问题描述】:
我有这个调度字典,我想用 1000 个键填充,主要与一个功能相关联。 尽管将键分配给不同的功能是未来的要求。 目前,肯定有比这更好的东西:
art = json.dumps(work['artist_name'])
phonenumber = json.dumps(work['From'])
x = getnewmusic()
artists = {'drake':x, 'jayz':x, 'nas':x,'lil wayne':x,'schoolboyq':x,
'kendrick lamar':x, 'j cole':x}
if art in artists:
artists[art](art,phonenumber)
有什么最快、更好的标准做法、未来的问题吗?
【问题讨论】:
-
如果您的大多数键映射到同一个函数,您将受益于不在字典中指定它们 - 使用
get并且您可以指定该通用函数作为值,如果键不在您的字典中。artist_function = artists.get(name, x)之类的东西 - 但完全不清楚您要在这里完成什么。 -
彼得上面的评论是最好的选择。但是,拥有
default功能的一个缺点是您无法验证艺术家。除了“如果艺术家中的艺术”之外,您还需要某种方式来验证艺术家。 -
@PeterDeGlopper 这样我将如何将参数传递给函数 x。
-
您好,真的有必要将您的艺术家放在字典中吗?所有艺术家都调用相同的函数,因此您可以将它们放在一个列表中,并在遍历列表时调用该函数。跨度>
-
是的,但是您实际上是在进行双重查找,您从字典中获取密钥,然后将其转换为 json (这就是我所理解的),尚不清楚您要尝试什么做,但“艺术家中的艺术”声明将在字典的键列表中执行查找。然后,您执行 O(1) 查找以获取密钥并在“if”语句的主体中调用函数。
标签: python list function dispatch