在列表中找不到术语,值错误:列表.索引(x) :x不在lis中

2024-05-13 21:09:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个记事本,里面装满了不同的材料,我被要求把它们分类成一个用户友好的可读语句。在

例如,如果我的material_list包含['Wool', 'Cotton'],它将输出'Wool & Cotton'

但是如果我的material_list包含['Wool', 'Aloe', 'Fiber'],它将输出'Wool & Aloe Fiber'。在

我实现了这一点,有时我有'Silk',但如果我的列表中有'Bamboo'和{},这意味着它是'Bamboo Silk'。在

当我有['Bamboo','Banana','Silk']时,我不必担心这个案子。在

# List of all Materials
materials = [
    'Aloe', 'Alpaca', 'Bamboo', 'Banana', 'Cotton',
    'Cowhide', 'Fiber', 'Hemp', 'Jute', 'Lambskin',
    'Leather', 'Linen', 'Paper', 'Polyester', 'Polypropylene',
    'Seagrass', 'Shearling', 'Sheepskin', 'Silk', 'Sisal',
    'Tencel', 'Viscose', 'Wool' , 'Yard'
               ] 

def FindMaterial(toPrint,database):
    material_list = []
    for x in range (0,len(database)):
        if database[x].lower() in toPrint.lower():
            material_list.append(database[x])

    #Special cases for certain combinations of materials
    def SpecialCases(mat1,mat2):
        if mat1 and mat2 in material_list:
            material_list.remove(mat1)
            material_list.remove(mat2)
            material_list.append(mat1+' '+mat2)
    SpecialCases('Aloe','Fiber')
    SpecialCases('Bamboo','Silk')
    SpecialCases('Banana','Silk')   
    SpecialCases('Wool','Sisal')

    if len(material_list) == 1:
        material_string = (material_list[0])
    else:
        material_string = (material_list[0]+' & '+material_list[1])

    return material_string

FindMaterial(sample_input,materials)

类似sample_input = ['Silk']的内容导致ValueError: list.index(x): x not in list行上的错误material_list.remove(mat1)

'Wool'没有产生错误。我知道'Fiber'单独或{}单独产生相同的错误,但这两个术语永远不会单独出现,只有'Silk'可以。在


Tags: indatabaselistmaterialbananasilkcottonmaterials