我有一本字典'mydict'。
{ 'a': ['xyz1', 'xyz2'],
'b': ['xyz3', 'xyz4'],
'c': ['xyz5'],
'd': ['xyz6']}
我正在尝试使用以下代码打印出该词典的所有键和值:
for username, details in mydict.iteritems():
pprint.pprint(username + " " + details)
但是,我收到以下错误:
AttributeError: 'list' object has no attribute 'iteritems'
任何帮助都将不胜感激。
答案 0 :(得分:1)
此代码适用于您的示例
>>> import pprint
>>> mydict = { 'a': ['xyz1', 'xyz2'],
'b': ['xyz3', 'xyz4'],
'c': ['xyz5'],
'd': ['xyz6']}
>>> for username, details in mydict.iteritems():
pprint.pprint((username, details))
('a', ['xyz1', 'xyz2'])
('c', ['xyz5'])
('b', ['xyz3', 'xyz4'])
('d', ['xyz6'])
答案 1 :(得分:-1)
当我尝试原始时,我得到相同的AttributeError,这是因为每个KEY中的VALUE,VALUE对是一个列表。
使用mydict.items()可以创建每个(KEY,VALUE)对的副本,然后可以打印出来:
for key, value in mydict.items():
print((key, value))
当然,如果您的字典很大,使用items()创建副本的内存很昂贵。哪个是能够使用iteritems()的最大优势(更低的内存成本,更高效率和 * 优化 for python *)遍历你的字典。
同样,您可以执行以下操作:
for key in d:
print((k, mydic[key]))
但是(在python中),这又慢了!因为每次查找mydict[key]
时都必须重新哈希字典。所以,mydict.items()似乎是最好的选择,因为它可以让你直接通过元组解包来访问这些值。
Raymond Hettinger(来自Python的iteritems和生成器大师)在美国PyCon上发表了精彩的演讲,你可以在这里观看:http://pyvideo.org/video/1780/transforming-code-into-beautiful-idiomatic-pytho