在循环中使用Python构建HashMap。需要澄清

时间:2016-08-01 18:54:21

标签: python

我在循环中运行并解析字符串。该字符串最终包含在主机上运行的主机和应用程序的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

3 个答案:

答案 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]