为了账号安全,请及时绑定邮箱和手机立即绑定

在列表中搜索字符

在列表中搜索字符

DIEA 2021-04-16 18:19:05
我已经进行了大量搜索,但是找不到我想要的。我正在使用Iron Python。我提取了一个很大的字符串列表(MyList),我想看看是否有包含SearchStrings词典中的Items的值。searchStrings词典中可能包含500多个项目。MyList = ["123steel","MylistConcrete","Nothinginhere","45","56","steel","CONCRETE"]SearchStrings = {'concrete' : 'C','CONCRETE' : 'C','Steel' : 'S', 'STEEL' : 'S'}我需要返回索引,然后从SearchString返回匹配的代码。即,如果我们发现'MylistConcrete'我将知道索引“ 1”并可以返回'C'我希望这对每个人都有意义。让我知道您是否需要任何澄清
查看完整描述

3 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

遍历您的项目,MyList并检查其中是否有所有dict(小写)键的每个项目(小写)。然后更换。假设您没有与键相同的单词具有不同的值(小写/大写差异除外)


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']


查看完整回答
反对 回复 2021-04-20
?
翻阅古今

TA贡献1780条经验 获得超5个赞

首先,我建议您使用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)


查看完整回答
反对 回复 2021-04-20
?
繁花不似锦

TA贡献1851条经验 获得超4个赞

for m in MyList :

    for k in SearchStrings :

        if k.lower() in m.lower() :

            print 'found', k, 'in', m, 'result', SearchStrings[k]


查看完整回答
反对 回复 2021-04-20
  • 3 回答
  • 0 关注
  • 156 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信