Python 在字典中搜索键时仅使用字符串中的第一个字母

标签 python loops dictionary

这里是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 只是为了检查它。否则我会返回值(value)。

编辑:

如果我链接到我使用其中一些代码的线程,也许会更清楚。

我假设这会搜索字典键中的整个单词,而不是键中的单个字母,这对我来说现在很有意义。

How to search if dictionary value contains certain string with Python

最佳答案

您正在定义许多名为 search 的函数,每个函数都会相互抵消,最后只调用您碰巧定义的最后一个函数。在循环中使用 def 语句是不常见的,并且使用 def 但不在循环的每个分支中调用/使用该函数肯定是错误的。

此外,for v in key:,其中key是一个字符串,依次赋值给v,每个键中的>字符

很难准确理解您认为自己在做什么,但我想您只想定义一次 search ,然后可能在循环中调用它。也许是这样的:

def search(dic, lookup, valur):   
    return lookup.get(key, value)

for key, value in dQC.items():
    QCtype = search(dQC, S2name)
    print(QCtype)

...?

关于Python 在字典中搜索键时仅使用字符串中的第一个字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27792094/

相关文章:

Python提取关键字和括号后的文本

javascript - 循环多维 UL 生成 javascript 数组

c# - 在 C# 中循环字典

python - gstreamer:向后播放音频文件

python - 使用多个变量转换 Panda 文档

c++ - C++如何从数组中获取最长的素数序列

javascript - 尝试获取 str 中每个字符的编号

python强制一个特定的键总是在字典的开头

Scala:如果 Map 是从 GroupBy 创建的,为什么 Map 中的可变值不能更改

python - Flask 中的模板标签?可能的?