如何对比两个列表并获取新增元素的索引?解决ValueError报错问题
问题解决:查找新租户索引报错的修复
错误原因
你通过集合运算得到的newrenter是列表类型(比如输出的['Bob']),但list.index()方法要求传入的是列表中的单个元素(这里是字符串'Bob'),而非列表本身。原列表new里的元素都是字符串,不存在['Bob']这个列表元素,因此触发ValueError。
修复方案
情况1:确定只有一个新增租户
直接取列表的第一个元素传入index():
new = ["Maria", "Eric", "Bram", 'Bernardo', 'Bob'] old = ['Karel', 'Maria', 'Eric', 'Bram', 'Bernardo'] newrenter = list(set(new) - set(old)) # 取列表中的第一个元素 newindex = new.index(newrenter[0]) print(newrenter) # 输出: ['Bob'] print(newindex) # 输出: 4
情况2:可能有多个新增租户
如果存在多个新增用户,循环遍历每个新增元素分别获取索引:
new = ["Maria", "Eric", "Bram", 'Bernardo', 'Bob', 'Alice'] old = ['Karel', 'Maria', 'Eric', 'Bram', 'Bernardo'] newrenters = list(set(new) - set(old)) # 遍历所有新增用户,输出对应的索引 for renter in newrenters: print(f"{renter} 的索引是: {new.index(renter)}")
额外提示:保持顺序的写法(可选)
集合运算会打乱元素的原始顺序,如果需要保留新增元素在new列表中的出现顺序,可用列表推导式代替集合:
newrenters = [name for name in new if name not in old] # 按上述方式获取索引 for renter in newrenters: print(f"{renter} 的索引是: {new.index(renter)}")
内容的提问来源于stack exchange,提问作者vincent verster
相关产品推荐
相关产品推荐

