我在循环中运行并解析字符串。该字符串最终包含在主机上运行的主机和应用程序的2个项目。正如所料,主机运行多个应用程序。我想将它全部存储在一个数据结构中,其中主机用作密钥。
以下是我失败的尝试。请帮助我理解为什么只有最后一个元素以host = app格式保存。
What i expect to see
host = app1, app2 etc
What i see
Host = app2 (always last)
data = dict()
def add(line):
l = line.split("/")
host = l[0].strip()
app = l[-1].strip()
data[host].append(app)
for entry in env:
if "/" not in entry: continue
add(entry)
print data
答案 0 :(得分:1)
问题在于data[host].append(app)
会将app
的值附加到存储为data[host]
运行时,data[host]
的值未设置,因此您无法append
。你会得到一个KeyError
。也许你的意思是data[host] = app
?或...
try:
data[host].append(app)
except KeyError:
data[host] = [app]
答案 1 :(得分:0)
data[host].append(app)
您认为主机位于dict中,这在您第一次附加到它时是不正确的。
答案 2 :(得分:0)
这就是我要找的东西。感谢所有想要帮助的人
if host in data:
data[host].append(app)
else:
data[host] = [app]