【发布时间】:2015-03-03 17:34:47
【问题描述】:
这里是 Python 初学者。尝试在字典中搜索字符串时遇到问题。
我正在编写的程序使用 xlrd 将 excel 电子表格(S2name)中的数据与字典键匹配,然后返回分配给键的值。这是为了将质量控制测试与化学数据相匹配。
字典很像这样:
dQC = {'4266152-001': 'METHOD_BLANK',
'4266152-002': 'LCS',
'4266152-004': 'LAB_DUPLICATE',
等等。
我的代码可以正常工作,只是搜索功能从字典中返回了错误的结果。
我已将问题隔离到以下 v 变量:
S2name = (sheet2.cell_value(row_index, 0))
for key, value in dQC.items():
def search(dic, lookup):
for v in key:
print("This should be the key in dQC, not the number %s" % v)
if v in lookup:
return v # I would obviously return value here, but it returns the wrong one.
else:
return False
QCtype = (search(dQC, S2name))
print(QCtype)
结果:
This should be the key in dQC, not the number 4
4
由于某种原因,v 只搜索字符串中的第一个数字(即:4)而不是整个字符串(即:4266152-001),所以当我使用 QCtype 调用该值时,它返回错误的数字.我希望 v 在迭代搜索时使用前 10 个字符,而不是首先使用他。
注意,在脚本中,我返回 v 只是为了检查它。否则我会返回值。
编辑:
如果我链接到我使用其中一些代码的线程可能会更清楚。
我假设这将搜索字典键中的整个单词,而不是键中的单个字母,这对我来说现在很有意义。
How to search if dictionary value contains certain string with Python
【问题讨论】:
-
你为什么要遍历密钥?密钥只是一个字符串;直接用就行了。
-
为什么要在for循环中定义搜索功能?
-
在你的代码中 v 是字符串键中的一个字符。当
lookup也有该字符时,search函数返回该字符。它不会返回错误的。
标签: python loops dictionary