字典内列表拆分遇报错:'list' object has no attribute 'split' 求助
问题解决:字典列表扁平化并去重
错误原因
你触发的'list' object has no attribute 'split'错误,是因为split()是字符串专属方法,但你遍历graph.values()得到的i是列表类型(比如[1]、[2,3]),列表没有split方法——你的目标是提取列表里的整数元素,完全不需要这个操作,直接遍历子列表即可。
解决方案1:嵌套循环手动去重
直接遍历每个子列表的元素,检查是否已存在于结果列表中,不存在则添加:
graph = {0 : [1], 1 : [2, 3], 2 : [2], 3 : [0] } visited = [] # 遍历字典的每个值(子列表) for sublist in graph.values(): # 遍历子列表中的每个数字 for num in sublist: if num not in visited: visited.append(num) print(visited) # 输出: [1, 2, 3, 0]
解决方案2:用集合/字典快速去重
利用集合的唯一性自动去重,或者用字典键的有序性(Python 3.7+)保留元素首次出现的顺序:
graph = {0 : [1], 1 : [2, 3], 2 : [2], 3 : [0] } # 方法2.1:集合去重(顺序可能不固定,取决于Python版本) visited = list({num for sublist in graph.values() for num in sublist}) # 方法2.2:用dict.fromkeys保留首次出现的顺序(Python 3.7+) visited = list(dict.fromkeys(num for sublist in graph.values() for num in sublist)) print(visited) # 输出: [1, 2, 3, 0]
内容的提问来源于stack exchange,提问作者Aleksandra Milicevic
相关产品推荐
相关产品推荐

