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

将列表值替换为字典值

将列表值替换为字典值

蛊毒传说 2022-09-20 17:47:10
我有一个示例代码似乎不能很好地工作,我已经在线尝试了不同的解决方案,但失败了。我有一个列表,它废弃了一个网站并返回动态的特殊div(每次运行代码时都会更改)。lvlv = ['div5', 'div3', 'div4', 'div1', 'div2']我有一个列表知道,其中包含要替换的文本类型,nvnv = ['div1', 'div2', 'div3', 'div4', 'div5']我还有一个名为的字典,它将值设置为某些值mmnvmm = {nv[0]:'type1',nv[1]:'type2',nv[2]:'type3', nv[3]:'type4',  nv[4]:'type5'}现在我想使用inde方法打印结果,因为对于其中的每个值,它应该检查该值是否对应于值,然后将该值替换为字典值lv[0:5]nvprint(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>]
查看完整描述

3 回答

?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

这是列表理解的一个很好的用例,例如使用以下代码:

print([ mm[item] for item in lv ])

这样做是按顺序遍历lv的所有元素(如您所描述的),并打印一个列表,其中列表的每个元素都是lv中相应元素是键的值。


查看完整回答
反对 回复 2022-09-20
?
一只甜甜圈

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

我做了一个简单的for循环来尝试解决这个问题。它循环遍历 lv 列表的长度,并将每个 lv 项设置为字典中的相应项。

for i in range(len(lv)):
    lv[i] = mm[lv[i]]

输出:[类型5“、”类型3“、”类型4“、”类型1“、”类型2“]


查看完整回答
反对 回复 2022-09-20
?
慕森卡

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

我终于想通了,我用这两个函数删除了多个字符串


def multiple_replacer(*key_values):

    replace_dict = dict(key_values)

    replacement_function = lambda match: replace_dict[match.group(0)]

    pattern = re.compile("|".join([re.escape(k) for k, v in key_values]), re.M)

    return lambda string: pattern.sub(replacement_function, string)


def multiple_replace(string, *key_values):

    return multiple_replacer(*key_values)(string)

现在输出给了我想要的东西。


EURO            [ weak3  ,  weak3  ,  weak3  ,  weak3  ,  weak2 ,  weak3 ]


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

添加回答

举报

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