2014-09-12 2 views
0

나는 각리스트의 첫 번째 요소를 기준으로 필터링하고자하는리스트 (아래 그림)를 가지고 있습니다. 한마디로파이썬에서리스트 이해력을 사용하여리스트리스트 필터링하기

raw_json = [[u'2014-09-09', u'18:00:00', 81, 1, u'codereview.stackexchange.com', u'Engineering & Technology', 1], [u'2014-09-09', u'18:00:00', 79, 1, u'google.com', u'Search', 0], [u'2014-09-11', u'23:00:00', 44, 1, u'newtab', u'Browsers', 0], [u'2014-09-11', u'23:00:00', 44, 1, u'iTunes', u'Music', -2], [u'2014-09-11', u'23:00:00', 24, 1, u'google.com', u'Search', 0], [u'2014-09-11', u'23:00:00', 22, 1, u'effbot.org', u'Search', 0], [u'2014-09-11', u'23:00:00', 3, 1, u'spotify', u'General Entertainment', -2], [u'2014-09-11', u'23:00:00', 2, 1, u'calendar.boston.com', u'Regional', -2]] 

, 나는이처럼 보이는 나에게 돌아온 것 너무 이상적으로 오늘 날짜를 필터링 할 수 있도록하고 싶습니다 :

result = [[u'2014-09-11', u'23:00:00', 44, 1, u'newtab', u'Browsers', 0], [u'2014-09-11', u'23:00:00', 44, 1, u'iTunes', u'Music', -2], [u'2014-09-11', u'23:00:00', 24, 1, u'google.com', u'Search', 0], [u'2014-09-11', u'23:00:00', 22, 1, u'effbot.org', u'Search', 0], [u'2014-09-11', u'23:00:00', 3, 1, u'spotify', u'General Entertainment', -2], [u'2014-09-11', u'23:00:00', 2, 1, u'calendar.boston.com', u'Regional', -2]] 

나는 다음과 같은 코드를 작성하지만, 점점 계속 누군가가 나에게 내가 정말 감사하겠습니다 내가 잘못 이해하는 데 도움 수 있다면 TypeError: list indices must be integers, not list

today = date.today().isoformat() 
today_raw_json = [i for i in raw_json if today==raw_json[i][0]] 
print today_raw_json 

말하는 오류 메시지.

+0

목록을 반복하면 인덱스가 아닌 요소가 반복됩니다. – user2357112

답변

1

당신이 원하는 :

[i for i in raw_json if i[0] == today] 

i 목록의 실제 요소가 아닌 인덱스입니다.

+0

알았어요. 그래서'나는'내가받은 오류를 설명하는 'raw_json'이라는 큰 목록 내에서 개별 목록을 반환하고있었습니다. 도와 주셔서 감사합니다. –

0

내장 된 filter 기능을 사용할 수 있습니다. 구문은 다음과 같습니다

filter(lambda x:x[0] == today, raw_json) 

추신 :

그래서
filter(function, sequence) 

, 코드의 모습 목록 내장을 사용하는 것을 선호한다는 것을 알고 있지만 필터를 사용하면 여기에서 코드를보다 쉽게 ​​읽을 수 있습니다.

관련 문제