Bla*_*Cat 2 python dictionary set
我想收集已安装的软件包及其主机版本来创建网格。主机不一定具有相同的软件包。例如:
在第一步中,我想简单存储并打印这些值。我应该使用什么数据结构?
我想以某种方式存储数据,如下所示:
for ..
# read values
versions[package][host] = version
Run Code Online (Sandbox Code Playgroud)
我想像这样打印这些值:
for packagename in packagenames
print packagename + ": "
for host in hosts
if versions[host][package] is not None
print versions[host][package]
print ";"
print "\n"
Run Code Online (Sandbox Code Playgroud)
但是因为我不知道有多少个包,并且并非所有包都存在于每个主机中,所以我不知道如何执行此操作。我想我应该使用字典,但我不知道如何。
使用 adefaultdict将是一个不错的选择。您可以填写您的字典,如下例所示:
from collections import defaultdict
versions = defaultdict(dict)
versions["openssl"]["host1"] = "1.0.1e"
versions["openssl"]["host2"] = "1.0.1e"
...
Run Code Online (Sandbox Code Playgroud)
通过使用 a defaultdict,您可以按照您的建议简单地使用循环存储您的配置。
from collections import defaultdict
versions = defaultdict(dict)
for ..
# read values
versions[package][host] = version
Run Code Online (Sandbox Code Playgroud)
打印字典可以这样完成:
for package, hosts in versions.items():
print package + ": "
for host, version in hosts:
print host + ": " version
print "\n"
Run Code Online (Sandbox Code Playgroud)