【问题标题】:Search in a list for characters在列表中搜索字符
【发布时间】:2018-06-30 12:36:27
【问题描述】:

我进行了大量搜索,但找不到我想要的。我正在使用 Iron Python。

我有一个已提取的大字符串列表 (MyList),我想查看是否存在包含 SearchStrings 字典中的项目的值。 searchStrings 字典可能包含超过 500 个项目。

MyList = ["123steel","MylistConcrete","Nothinginhere","45","56","steel","CONCRETE"]
SearchStrings = {'concrete' : 'C','CONCRETE' : 'C','Steel' : 'S', 'STEEL' : 'S'}

我需要返回索引,然后从 SearchString 中匹配代码。

即如果我们找到'MylistConcrete',我将知道索引'1'并且可以返回'C'

我希望这对每个人都有意义。如果您需要任何说明,请告诉我

提前致谢,

杰夫。

【问题讨论】:

  • 对于您问题中的具体示例,您希望得到什么输出?
  • 如何处理小写/大写。 IE。 Concrete 不在SearchStrings.keys 中,而是在concreteCONCRETE
  • 理想情况下我想忽略大小写,也许将所有内容都更改为小写
  • 具体情况是用户可能会输入“concrete”或“CONC”或“CONCRETE”等内容,我想在一个可以传回的新列表中返回值“C”作为价值。我猜字典是存储这些匹配项的最佳方式?

标签: python list dictionary ironpython


【解决方案1】:

首先,我建议您使用string.lower() 来消除搜索中的大小写依赖性。这将使您的字典更小更易于管理。

然后你可以使用一个简单的 map 函数来创建一个包含你的值的新数组,同时保留索引(或者如果你需要的话改变原来的)。

MyList = ["123steel","MylistConcrete","Nothinginhere","45","56","steel","CONCRETE"]
SearchStrings = {'concrete' : 'C', 'steel' : 'S'}

def check_search_strings(x):
    for k, v in SearchStrings.items():
        if k in x.lower():
            return v
    return None

indexes = list(map(check_search_strings, MyList))

print (indexes)

【讨论】:

    【解决方案2】:

    遍历MyList 中的项目并检查每个项目(小写)是否有任何字典的(小写)键在其中。然后更换。 这假设您没有将相同单词作为键的不同值(小写/大写差异除外)

    my_list = ["123steel", "MylistConcrete", "Nothinginhere", "45", "56", "steel", "CONCRETE"]
    search_strings = {'concrete': 'C', 'CONCRETE': 'C', 'Steel': 'S', 'STEEL': 'S'}
    
    for i in range(len(my_list)):
        for k, v in search_strings.items():
            if k.lower() in my_list[i].lower():
                my_list[i] = v
                break   # avoids completing the loop if first item is found
    print(my_list)
    

    结果是

    ['S', 'C', 'Nothinginhere', '45', '56', 'S', 'C']
    

    【讨论】:

    • 看起来不错,我试试这个。
    • 完美,效果很好。非常感谢你。我需要花更多的时间来学习这些东西!
    【解决方案3】:
    for m in MyList :
        for k in SearchStrings :
            if k.lower() in m.lower() :
                print 'found', k, 'in', m, 'result', SearchStrings[k]
    

    【讨论】:

      猜你喜欢
      • 2018-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-07
      相关资源
      最近更新 更多