2017-04-19 77 views
-1

名单我尝试添加函数对象列出,这是字典的元素:词典的功能

jobs = {} 
    job = sched.add_date_job(callback, run_at, [params]) 
    jobs[hereCanBeRandomNumber].append(job) 

但是,似乎我在最后一行的问题。编译器说:KeyError: 118096950

有什么问题?

+1

欢迎来到堆栈溢出。请花时间访问我们的[帮助]了解发布一个好问题。特别是,请务必阅读如何写[mcve]。您发布的代码显然是一个片段,并且不完整。然而,在你提供的一点点,你的工作字典是空的。你不能追加到'jobs [hereCanBeRandomNumber]'所期望的列表中,因为没有任何东西将这个列表放到字典中。 –

+1

仅用'dict [key] = value'赋值,而不是使用append方法,这根本无法实现您的愿望。 –

回答

2

您添加到字典中的方式不正确。

jobs[hereCanBeRandomNumber].append(job) 

转化为“附加任务与主要hereCanBeRandomNumber字典的价值”

如果你想添加到字典中,使用:

jobs[hereCanBeRandomNumber] = job 

这将增加到jobs字典,所以它看起来像:

jobs = {118096950: job} 
+1

或'jobs.setdefault(hereCanBeRandomNumber,[])。append(job)'。这将返回'jobs [hereCanBeRandomNumber]'中的所有内容,否则返回'[]',然后返回一个空列表。但我不完全相信这是OP的问题 - 他们发布的代码太模糊。 –

0

所以你的问题在于你试图添加一个还不存在的密钥。

取像

jobs = {} 和做 jobs[123].append(foo) 字典会产生KeyError异常如无物在123还不存在。

要解决这个问题,你可以做以下任一操作: from collections import defaultdict jobs = defaultdict(list) jobs[123].append(foo) 这意味着如果一个键不存在,它被初始化为空列表第一或

jobs = {} jobs[123] = jobs.get(123, []).append(job) ,检查工作为的存在键,如果它不存在使用空列表