猿问

将列表值替换为字典值

我有一个示例代码似乎不能很好地工作,我已经在线尝试了不同的解决方案,但失败了。


我有一个列表,它废弃了一个网站并返回动态的特殊div(每次运行代码时都会更改)。lv


lv = ['div5', 'div3', 'div4', 'div1', 'div2']

我有一个列表知道,其中包含要替换的文本类型,nv


nv = ['div1', 'div2', 'div3', 'div4', 'div5']

我还有一个名为的字典,它将值设置为某些值mmnv


mm = {nv[0]:'type1',nv[1]:'type2',nv[2]:'type3', nv[3]:'type4',  nv[4]:'type5'}

现在我想使用inde方法打印结果,因为对于其中的每个值,它应该检查该值是否对应于值,然后将该值替换为字典值lv[0:5]nv


print(lv[0:5])

#output should be like this

'type1','type3','type4','type2', 'type1'

这是我的完整原始源代码:


“”蟒蛇


    lv = [l for l in cur.find_all(id=levels)]


    nv = [

        '<div id="map-innercontainer-weak3" style="background-image:none"> </div>',

        '<div id="map-innercontainer-strong3"> </div>',

        '<div id="map-innercontainer-strong2"> </div>',

        '<div id="map-innercontainer-strong1"> </div>',

        '<div id="map-innercontainer-weak1"> </div>',

        '<div id="map-innercontainer-weak2"> </div>',

        '<div id="map-innercontainer-weak3"> </div>',

    ]


    mm = {

        nv[0]:'',

        nv[1]:'Strong3',

        nv[2]:'Strong2',

        nv[3]:'Strong1',

        nv[4]:'Weak1',

        nv[5]:'Weak2',

        nv[6]:'Weak3',

    }



    # #Show out the results to the user

    print(f'Currency\t\tStrength\n')

    print(f'{pairs[0].text}\t\t\t{lv[0:6]}\n')

    print(f'{pairs[1].text}\t\t\t{lv[6:12]}\n')

    print(f'{pairs[2].text}\t\t\t{lv[12:18]}\n')

    print(f'{pairs[3].text}\t\t\t{lv[18:24]}\n')

    print(f'{pairs[4].text}\t\t\t{lv[24:30]}\n')

    print(f'{pairs[5].text}\t\t\t{lv[30:36]}\n')

它输出这个,但我想用DICT值替换DIV


    Currency        Strength


    EURO            [<div id="map-innercontainer-weak3" style="background-image:none"> </div>, <div id="map-innercontainer-weak3" style="background-image:none"> </div>, <div id="map-innercontainer-weak3" style="background-image:none"> </div>, <div id="map-innercontainer-weak3" style="background-image:none"> </div>, <div id="map-innercontainer-weak3" style="background-image:none"> </div>, <div id="map-innercontainer-weak3"> </div>]


蛊毒传说
浏览 119回答 3
3回答

qq_遁去的一_1

这是列表理解的一个很好的用例,例如使用以下代码:print([&nbsp;mm[item]&nbsp;for&nbsp;item&nbsp;in&nbsp;lv&nbsp;])这样做是按顺序遍历lv的所有元素(如您所描述的),并打印一个列表,其中列表的每个元素都是lv中相应元素是键的值。

一只甜甜圈

我做了一个简单的for循环来尝试解决这个问题。它循环遍历 lv 列表的长度,并将每个 lv 项设置为字典中的相应项。for&nbsp;i&nbsp;in&nbsp;range(len(lv)): &nbsp;&nbsp;&nbsp;&nbsp;lv[i]&nbsp;=&nbsp;mm[lv[i]]输出:[类型5“、”类型3“、”类型4“、”类型1“、”类型2“]

慕森卡

我终于想通了,我用这两个函数删除了多个字符串def multiple_replacer(*key_values):&nbsp; &nbsp; replace_dict = dict(key_values)&nbsp; &nbsp; replacement_function = lambda match: replace_dict[match.group(0)]&nbsp; &nbsp; pattern = re.compile("|".join([re.escape(k) for k, v in key_values]), re.M)&nbsp; &nbsp; return lambda string: pattern.sub(replacement_function, string)def multiple_replace(string, *key_values):&nbsp; &nbsp; return multiple_replacer(*key_values)(string)现在输出给了我想要的东西。EURO&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [ weak3&nbsp; ,&nbsp; weak3&nbsp; ,&nbsp; weak3&nbsp; ,&nbsp; weak3&nbsp; ,&nbsp; weak2 ,&nbsp; weak3 ]
随时随地看视频慕课网APP

相关分类

Python
我要回答