-2
## 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

有人可以帮忙吗?

4

3 回答 3

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
于 2013-10-20T18:35:08.940 回答
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())因为它不需要。

于 2013-10-20T18:35:38.827 回答
0

正如 ICodez 和 Matt Ball 指出的那样,更好的方法是使用字典列表,而不是名称。如果您真的想打印字典的名称,您甚至可以列出要打印的名称。

但是,如果您真的想按照自己的方式进行操作,则需要使用locals(),这是一个特殊的函数,它返回将所有局部变量的名称映射到它们的值的字典。

GroupList = ['G046', 'G688']
for groupname in GroupList:
    print 'Groupname is', groupname
    print locals()[groupname].keys()

最后一行的第一部分,locals()[groupname]使用字典变量的名称来获取实际的字典,然后根据需要.keys()获取键。

于 2013-10-20T18:42:35.930 回答