从origianl dict返回文件名

时间:2017-11-07 23:11:43

标签: python python-3.x

我不太清楚这意味着什么。

表示value_dict.items()中的(位置,日期,标题):        builtins.AttributeError:'list'对象没有属性'items' 有人可以帮我解决这个问题吗?

def create_date_dict(image_dict):
'''(dict) -> dict

Given an image dictionary, return a new dictionary
where the key is a date and the value  is a list
of filenames of images taken on that date.

>>> d = {'image1.jpg': ['UTSC', '2017-11-03','Happy Friday']}
>>> date_d = create_date_dict(d)
>>> date_d == {'2017-11-03': ['image1.jpg']}
True
'''
new_d = {}
for (filenames, value_dict) in image_dict.items():
    for (location, date, caption) in value_dict.items():
        new_d[date] = {list(filename)}
return new_d

1 个答案:

答案 0 :(得分:2)

value_dict是一个列表。您的第二个for循环应该看起来像

for location, date, caption in value_dict:

利用可迭代的解包

编辑:

实际上,现在我再看一遍,你根本不需要另一个循环。只是做

location, date, caption = value_dict

编辑2:

我不确定对您遇到的新错误负责的是什么。尝试这个功能,它修复了我在你原来注意到的其他一些事情

from collections import defaultdict

def create_date_dict(image_dict):
    d = defaultdict(list)
    for image, (loc, date, cap) in image_dict.items():
         d[date].append(image)
    return d

这使用defaultdict,它是标准库中的一个方便的dict子类

编辑4:

没有defaultdict,这看起来像

def create_date_dict(image_dict):
    d = {}
    for image, (loc, date, cap) in image_dict.items():
         if date in d:
             d[date].append(image)
         else:
             d[date] = [image]
    return d