2016-11-24 3 views
0

나는 파이썬에서 dict의 튜플을 리턴하는 MySQL 쿼리를 실행 중이며 결과를 호출 할 수있다. 이제 각 dict은 3 개의 키/값 쌍을 요소로 가지며,이 세 요소 중 하나는 날짜입니다. 이제는 "duple of tictle of dict"을 만들려합니다.튜플 튜플 from mysql 데이터베이스

(({},{},{}..),({},{},{}..),({},{},{}..)...) 

각 내부 튜플은 같은 날짜의 데이터를 나타냅니다. 나는 내가 독해력을 사용할 수 있다는 것을 안다. 그러나 이것을하는 더 우아한 방법을 찾고 있습니다. 가장 효율적인 방법으로 어떻게이 작업을 수행 할 수 있습니까?

+0

실제 샘플 입력 및 예상 출력을 제공하면 더 쉬울 수 있습니까 – Guillaume

+0

튜플의 튜플에 이들을 보관해야합니까? – khajvah

+0

khajvah @ 필요하지 않습니다. 그것은 내가 원한 무엇이든 날짜의 기초에 사전의 그룹이다. –

답변

1

한 좋은 찾고 솔루션은 사전에 내부에 보관하는 것입니다 : 이제

>>> t = ({"a":2}, {"a":2}, {"a":3}) 
>>> import collections 
>>> d = collections.defaultdict(list) 
>>> for i in t: 
...  d[i['a']].append(i) 
... 

, 이것은 당신이 원하지 않는 것을 분명히 그러나 이것은 측면에서 직접 루프 내에서 목록의 목록을 만드는 것보다 낫다 속도 또한 사전은 이런 종류의 데이터에 더 잘 맞는 것처럼 보입니다. 이것은 또한 쉽게 원하는대로 변환 할 수 있습니다 : 속도가 중요하다

>>> [k for c,k in d.items()] 
[[{'a': 2}, {'a': 2}], [{'a': 3}]] 

경우, 당신은 당신이 더 나은 알고리즘을 얻을 수있는 경우에 날짜별로 DB 결과를 정렬 할 수 있습니다.

+0

예이 작업을 수행하는 전체 목표는 시간을 줄이는 것입니다. 그럼 내가 원하는 알고리즘을 알려주시겠습니까? 만약 내가 데이터베이스에서 날짜로 데이터 순서를 얻을. –

+0

@MahendraVishwakarma 먼저 시도해보십시오. 이것은 충분히 빠를 것입니다. – khajvah

+0

이것은 이미 시도한 바 있습니다. 이렇게하면 수백만 건의 레코드를 반복해야하고 모든 레코드를 반복하고 싶지 않습니다. 수백만 건의 레코드를 반복하기 때문에 시간이 오래 걸립니다. –