鱼C论坛

 找回密码
 立即注册
查看: 2674|回复: 21

[已解决]字符串索引

[复制链接]
发表于 2020-3-2 18:33:50 From FishC Mobile | 显示全部楼层 |阅读模式
5鱼币
问题:
        现有列表:[长白山,一品红,长白山,长白山,一品红]
        给出字符串:长白山上有一品红,一品红在长白山上
        找出长白山,一品红这两个名字的在字符串中的全部索引
       
人忙晕了!!!列表最好能用上,谢谢
最佳答案
2020-3-2 18:33:51
pythonsrj 发表于 2020-3-3 14:24
第二句代码就报错了,TypeError: unhashable type: 'list'

漏了两个i

def getIndex(list1,str):
    index = {}.fromkeys((list1 for i in             range(len(list1))))

    for i in range(len(list1)):
        index[list1] = []
    for j in range(len(list1)):
        for i in range(len(str)):
            if list1[j] in str:
                m = str.index(list1[j])
                str = str.replace(str[m],'p',1)
                index[list1[j]].append(m)
               
    return index
   
list1 = ['长白山','一品红']
str = '长白山上有一品红,一品红在长白山上'
print(getIndex(list1,str))

最佳答案

查看完整内容

漏了两个i def getIndex(list1,str): index = {}.fromkeys((list1 for i in range(len(list1)))) for i in range(len(list1)): index] = [] for j in range(len(list1)): for i in range(len(str)): if list1[j] in str: m = str.index(list1[j]) str = str.replace(str[m],'p',1) index].append(m) ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-2 18:33:51 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
pythonsrj 发表于 2020-3-3 14:24
第二句代码就报错了,TypeError: unhashable type: 'list'

漏了两个i

def getIndex(list1,str):
    index = {}.fromkeys((list1 for i in             range(len(list1))))

    for i in range(len(list1)):
        index[list1] = []
    for j in range(len(list1)):
        for i in range(len(str)):
            if list1[j] in str:
                m = str.index(list1[j])
                str = str.replace(str[m],'p',1)
                index[list1[j]].append(m)
               
    return index
   
list1 = ['长白山','一品红']
str = '长白山上有一品红,一品红在长白山上'
print(getIndex(list1,str))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-2 18:45:43 | 显示全部楼层
全部索引???
是出现的次数吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-2 19:25:05 | 显示全部楼层
写一个笨方法:
s1 = s2 = "长白山上有一品红,一品红在长白山上"
l1, l2, l3, l4 = [], [], list(s1), list(s1)

while s1.find("长白山") != -1:
    idx = s1.find("长白山")
    del l3[idx: idx + 3]
    l1.append(idx)
    s1 = "".join(l3)

while s2.find("一品红") != -1:
    idx = s2.find("一品红")
    del l4[idx: idx + 3]
    l2.append(idx)
    s2 = "".join(l4)

print("长白山在字符串中的全部索引:" + " ".join(str(i) for i in l1))
print("一品红在字符串中的全部索引:" + " ".join(str(i) for i in l2))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-2 20:03:15 From FishC Mobile | 显示全部楼层
根据需要可以通过改变str和list1来得到你想要的结果

def getIndex(list1,str):
    index = {}.fromkeys((list1[i] for i in             range(len(list1))))

    for i in range(len(list1)):
        index[list1[i]] = []
    for j in range(len(list1)):
        for i in range(len(str)):
            if list1[j] in str:
                m = str.index(list1[j])
                str = str.replace(str[m],'',1)
                index[list1[j]].append(m)
               
    return index
   
list1 = ['长白山','一品红']
str = '长白山上有一品红,一品红在长白山上'
print(getIndex(list1,str))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-3-2 21:06:38 | 显示全部楼层
寻风 发表于 2020-3-2 20:03
根据需要可以通过改变str和list1来得到你想要的结果

def getIndex(list1,str):

你逗号没算上。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-3-2 21:31:23 | 显示全部楼层
pythonsrj 发表于 2020-3-2 21:06
你逗号没算上。。

逗号后面的句子少了2步
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-3-2 21:40:03 | 显示全部楼层
zltzlt 发表于 2020-3-2 19:25
写一个笨方法:

你这答案也不对
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-2 22:26:03 From FishC Mobile | 显示全部楼层
pythonsrj 发表于 2020-3-2 21:31
逗号后面的句子少了2步


bug已修复

def getIndex(list1,str):
    index = {}.fromkeys((list1 for i in             range(len(list1))))

    for i in range(len(list1)):
        index[list1] = []
    for j in range(len(list1)):
        for i in range(len(str)):
            if list1[j] in str:
                m = str.index(list1[j])
                str = str.replace(str[m],'p',1)
                index[list1[j]].append(m)
               
    return index
   
list1 = ['长白山','一品红']
str = '长白山上有一品红,一品红在长白山上'
print(getIndex(list1,str))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-2 22:34:12 | 显示全部楼层
寻风 发表于 2020-3-2 22:26
bug已修复

def getIndex(list1,str):

用<>来输入代码
否则会出现斜体
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-2 22:42:00 From FishC Mobile | 显示全部楼层
蒋博文 发表于 2020-3-2 22:34
用来输入代码
否则会出现斜体

?什么意思。用有斜体吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-2 22:47:06 | 显示全部楼层
本帖最后由 蒋博文 于 2020-3-2 22:50 编辑
寻风 发表于 2020-3-2 22:42
?什么意思。用有斜体吗?


微信截图_20200302224543.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-2 22:51:13 From FishC Mobile | 显示全部楼层
蒋博文 发表于 2020-3-2 22:47

?404
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-2 22:52:37 From FishC Mobile | 显示全部楼层
蒋博文 发表于 2020-3-2 22:47

哦,现在看到了,我这边看不到这个情况。
是说把代码打到<>里面吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-2 22:55:01 | 显示全部楼层
寻风 发表于 2020-3-2 22:52
哦,现在看到了,我这边看不到这个情况。
是说把代码打到里面吗

是的,以后注意就不会出现这种情况了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-3-3 14:24:29 | 显示全部楼层
寻风 发表于 2020-3-2 22:26
bug已修复

def getIndex(list1,str):

第二句代码就报错了,TypeError: unhashable type: 'list'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-3 14:36:04 From FishC Mobile | 显示全部楼层
pythonsrj 发表于 2020-3-3 14:24
第二句代码就报错了,TypeError: unhashable type: 'list'

def getIndex(list1,str):
    index = {}.fromkeys((list1 for i in             range(len(list1))))

    for i in range(len(list1)):
        index[list1] = []
    for j in range(len(list1)):
        for i in range(len(str)):
            if list1[j] in str:
                m = str.index(list1[j])
                str = str.replace(str[m],'p',1)
                index[list1[j]].append(m)
               
    return index
   
list1 = ['长白山','一品红']
str = '长白山上有一品红,一品红在长白山上'
print(getIndex(list1,str))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-3 14:36:43 From FishC Mobile | 显示全部楼层
?奇怪,我发的时候是好的,发出来就错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-3 14:37:24 From FishC Mobile | 显示全部楼层
<
def getIndex(list1,str):
    index = {}.fromkeys((list1[i] for i in             range(len(list1))))

    for i in range(len(list1)):
        index[list1[i]] = []
    for j in range(len(list1)):
        for i in range(len(str)):
            if list1[j] in str:
                m = str.index(list1[j])
                str = str.replace(str[m],'p',1)
                index[list1[j]].append(m)
               
    return index
   
list1 = ['长白山','一品红']
str = '长白山上有一品红,一品红在长白山上'
print(getIndex(list1,str))
>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-3-6 17:36:20 | 显示全部楼层
没人了吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-19 05:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表