## Dictionary List
G046 = {'046-HOST1':'192.168.1.10', '046-HOST2':'10.1.0.1'}
G688 = {'688-HOST1':'8.8.8.8', '688-HOST2' : '123.3.3.3'}
## Group List
GroupList = ['G046', 'G688']
for groupname in GroupList:
print ('Groupname is', groupname) ## prints "G046" and "G688"
print (dict(groupname).keys()) ## <---- error occurs
我想打印所有词典列表中的所有项目。但是我得到了以下信息:
ValueError: dictionary update sequence element #0 has length 1; 2 is required
有人可以帮忙吗?
答案 0 :(得分:1)
您的代码正在尝试将字符串转换为字典。这正是dict
的作用,但这在这里没有意义。
相反,只需将对象直接放入GroupList
。
GroupList = [G046, G688]
for group in GroupList:
print (group.keys())
但我真的想要的是每个字典中的项目都可以分开打印。
我只是使用pprint
来完成此操作并完成它:
from pprint import pprint
GroupList = [G046, G688]
for group in GroupList:
pprint(group, width=1) # pass a small width to force multiline output
答案 1 :(得分:0)
我认为这就是你想要的:
G046 = {'046-HOST1':'192.168.1.10', '046-HOST2':'10.1.0.1'}
G688 = {'688-HOST1':'8.8.8.8', '688-HOST2' : '123.3.3.3'}
GroupList = [G046, G688] # Make the items the dictionaries themselves
for groupname in GroupList:
print ('Groupname is', groupname)
print (groupname.keys())
输出:
('Groupname is', {'046-HOST2': '10.1.0.1', '046-HOST1': '192.168.1.10'})
['046-HOST2', '046-HOST1']
('Groupname is', {'688-HOST2': '123.3.3.3', '688-HOST1': '8.8.8.8'})
['688-HOST2', '688-HOST1']
基本上,我所做的就是让GroupList
中的项目成为词典,而不是字符串。我还删除了dict
中的print (dict(groupname).keys())
,因为它不需要。
答案 2 :(得分:0)
正如ICodez和Matt Ball指出的那样,更好的方法就是使用字典列表,而不是名称。如果你真的想打印字典的名字,你甚至可以列出要打印的名字。
但是如果你真的想按自己的方式去做,你想使用locals()
,这是一个特殊的函数,它返回将所有局部变量的名称映射到它们的值的字典。
GroupList = ['G046', 'G688']
for groupname in GroupList:
print 'Groupname is', groupname
print locals()[groupname].keys()
最后一行的第一部分locals()[groupname]
使用字典变量的名称来获取实际字典,然后.keys()
获取密钥,如您所愿。