我是 Python 的超级新手,我认为这不是我的语法问题,但根据我的理解......(我确信有一种更简单的方法可以做到这一点,但现在我真的只是想要一些帮助我对循环的理解有什么问题)
考虑到一些大致类似于...的代码
for k, v in dict1.iteritems():
if v not in dict2.keys():
print "adding %s to dict2" % v
dict2[v] = "whatever"
我的循环循环遍历 dict1 中每个键的“if”,因为 print 语句我可以知道。就好像 for 循环每次都使用 dict2 的原始定义,并且不考虑上次迭代中发生的任何事情。
我曾预计,一旦我使用 dict1 中的唯一值通过 for 循环一次,来自 dict1 的任何重复值都会跳过循环的 if 步骤,因为该值已在前一次迭代中添加到 dict2 中。这是不正确的吗?
非常感谢!
乔
更多上下文:嗨,这是我实际拥有的(我写过的第一件事,所以如果你批评整件事可能会对我有所帮助!)我有一个文件列出员工及其指定的“工作单位”(如果有帮助的话,用“工作单位”这个词代替“团队”),我想出了如何将它导入字典。现在我想把它变成一个“工作单位”的字典作为键,关联的员工作为值。现在哪个员工都没有关系,我只是想弄清楚如何为每个工作单元获取一个包含 1 个键的字典)。到目前为止我所拥有的......
sheet = workbook.sheet_by_index(0)
r = sheet.nrows
i = 1
employees = {}
'''Importing employees into a employees dictionary'''
while i < r:
hrid = sheet.row_values(i,0,1)
name = sheet.row_values(i,1,2)
wuid = sheet.row_values(i,2,3)
wuname = sheet.row_values(i,3,4)
wum = sheet.row_values(i,4,5)
parentwuid = sheet.row_values(i,5,6)
employees[str(i)] = hrid, name, wuid, wuname, wum, parentwuid
i += 1
'''here's where I create workunits dictionary and try to begin to populate'''
workunits = {}
for k, v in employees.iteritems():
if v[2] not in workunits.keys():
print "Adding to %s to the dictionary" % (v[2])
workunits[str(v[2])] = v[1]
解决方案:好的,终于到了……这只是因为我没有在 if 语句中调用 v[2] 上的 str()。谢谢大家!