2017-11-09 1 views
0

이 함수를 해결하기 위해 다른 함수를 호출하려고했지만이 함수는 다른 함수에서 정의 되었더라도이 파일이 정의되어 있지 않다는 오류 메시지가 표시됩니다.사전에서 날짜별로 목록으로 이미지 정렬

filename_dict = create_image_dict(open_csv_file) 
builtins.NameError: name 'open_csv_file' is not defined 

이 작업을 수행하는 다른 방법이 있는지 궁금합니다. 누구든지 나를 도울 수 있습니까?

def sorted_images(image_dict): 
'''(dict) -> list of str 

Given an image dictionary return a list of the filenames 
sorted by date. 

>>> d = {'image1.jpg': ['UTSC', '2017-11-03','Happy Friday'], \ 
'image2.jpg': ['UTSC', '2017-11-04', 'Happy Sat.']} 
>>> sorted_images(d)  
['image1.jpg', 'image2.jpg'] 
''' 
new_list = [] 
filename_dict = create_image_dict(open_csv_file) 
sub_dict = filename_dict[filename] 
early_date = 0 
early_filename = '' 
for (location, date, caption) in sub_dict.items(): 
    if date > early_date: 
     early_filename = filename 
     new_list.append(early_filename) 
return new_list 
+0

"open_csv_file"은 어디에 정의합니까? 전체 코드를 게시 할 수 있습니까? –

+0

다른 함수에서 정의했습니다. 다른 함수를 호출하려고합니다. – bigd

+1

그래서 ..... wheer는 다른 함수입니까? 스코프를 볼 필요가 있습니다. 범위를 벗어났습니다. 내 PC에서 변수를 선언하면 볼 수 없습니다. –

답변

0
# With lambda expression 

def sorted_images(image_dict): 
    result = sorted(image_dict.values(), key=lambda x: x[1].split('-')) 
    return [image for (image, exif) in image_dict.items() for (_exif) in result if (exif == _exif)] 

# Without lambda expression 


def sort_by_date(x): 
    return x[1].split('-') 

def sorted_images(image_dict): 
    result = sorted(image_dict.values(), key=sort_by_date) 
    return [image for (image, exif) in image_dict.items() for (_exif) in result if (exif == _exif)] 

이 지정한 데이터 단지를 수행하는 기능입니다.

+0

더 좋은 방법이 있나요? – bigd

+0

내 솔루션을 업데이트했습니다 – Boxpositron

+0

나는 무슨 lamda인지 모르겠다. 람다없이 할 수 있을까요? – bigd

관련 문제