我正在尝试创建一个节点图表作为字典,但我得到了一些意想不到的结果:
如果单词的最后一个字母等于,则为图表的节点 第二个名字第一个字母
我的列表:
names = ["Mark", "Kelly", "Kurt", "Terk"]
我的代码:
n = [ x.lower() for x in names ]
graph = {}
temp = []
for x in n:
temp.clear()
for y in n:
if(x[-1]==y[0] and not x==y):
temp.append(y)
graph[x] = temp
结果:
{'kurt': ['kelly', 'kurt'], 'terk': ['kelly', 'kurt'], 'kelly': ['kelly', 'kurt'], 'mark': ['kelly', 'kurt']}
预期行为
{'kurt': ['terk'], 'terk': ['kelly', 'kurt'], 'kelly': [], 'mark': ['kelly', 'kurt']}
我做错了什么?
答案 0 :(得分:2)
.clear
仅清空列表,但是将相同的列表分配给密钥,然后再次清除;列表的最终状态是所有键的所有内容。考虑为每个项目创建一个新列表:
...
for x in n:
temp = []
for y in n:
if x[-1]==y[0] and x!=y:
temp.append(y)
graph[x] = temp