사전 목록에서 여러 키 값을 어떻게 비교합니까?

제임스 메르 츠

목록 내에서 모두 동일한 구조를 가진 사전 목록이 있습니다. 예를 들면 :

test_data = [{'id':1, 'value':'one'}, {'id':2, 'value':'two'}, {'id':3, 'value':'three'}]

내가해야 할 일은 이러한 각 사전을 비교하고 값 키 쌍을 기반으로 "유사한"사전을 반환하는 것입니다. 예를 들어, 키 value와 값이 주어지면 이 경우 oen와 거의 유사한 일치하는 모든 사전을 찾고 싶습니다 .oen[{'id':1, 'value':'one'}]

difflib기능이 get_close_matches가까운 내가 필요로한다. 목록 이해를 사용하여 특정 키의 값을 추출한 다음 해당 값을 내 검색과 비교할 수 있습니다.

values = [ item['value'] for item in test_data ]
found_vals = get_close_matches('oen', values) #returns ['one']

이 작업을 수행하려면 한 단계 더 나아가 모든 것을 원래 사전과 다시 연결해야합니다.

In  [1]: get_close_dicts('oen', test_data, 'value')
Out [1]: [{'id':1, 'value':'one'}]

참고 : 사전 목록이 상당히 많으므로 가능한 한 효율적이고 빠르기를 바랍니다.

ValAyal

데이터에 대해 get_close_dicts를 실행하기 전에 역방향 조회 딕셔너리를 만들 수 있으므로 값 집합이 반환되면이를 사용하여 관련 딕셔너리를 조회 할 수 있습니다.

'value'키에 대한 딕셔너리에서 고유 한 값이 보장되는 경우 다음을 수행 할 수 있습니다.

reverselookup = {thedict['value']:thedict for thedict in test_data}

그러나 여러 dict가 'value'키에 대해 동일한 값을 갖는 경우를 처리해야하는 경우 모든 dict를 매핑해야합니다 (키가 'value'의 값인 dict를 제공합니다. 값은 해당 값을 가진 사전 목록입니다) :

from collections import defaultdict
reverselookup = defaultdict(list)
for testdict in test_data:
    reverselookup[testdict['value']].append(testdict)

예를 들어 테스트 데이터에 다음과 같은 추가 사전이있는 경우 :

>>> test_data = [{'id':1, 'value':'one'}, {'id':2, 'value':'two'}, 
                 {'id':3, 'value':'three'}, {'id':4, 'value':'three'}]

그런 다음 위의 역방향 조회 구성은 다음을 제공합니다.

{
  "three": [
    {
      "id": 3,
      "value": "three"
    },
    {
      "id": 4,
      "value": "three"
    }
  ],
  "two": [
    {
      "id": 2,
      "value": "two"
    }
  ],
  "one": [
    {
      "id": 1,
      "value": "one"
    }
  ]
}

그런 다음 값을 얻은 후 dicts를 검색하십시오 (그런 다음 목록 사용 사례 목록이 있으면 연결할 수 있으며 첫 번째 사용 사례가 있으면 연결할 필요가 없습니다).

from itertools import chain    
chain(*[reverselookup[val] for val in found_vals])

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

사전 목록에서 특정 키에 대한 고유 값을 찾으려면 어떻게합니까?

분류에서Dev

사전 목록에서 키 / 값 쌍을 삭제하려면 어떻게해야합니까? Pandas env

분류에서Dev

Python 목록의 키 값을 여러 사전과 비교

분류에서Dev

공통 키에서 동일한 값을 가진 여러 사전 목록 병합

분류에서Dev

Django 템플릿에서 목록을 값으로 사용하여 사전을 어떻게 반복합니까?

분류에서Dev

두 목록을 서로 비교하고 C #을 사용하여 그에 따라 픽셀 값을 설정하려면 어떻게해야합니까?

분류에서Dev

간단한 Odata 필터를 사용하여 목록의 값을 어떻게 비교합니까?

분류에서Dev

여러 값을 쿼리에 어떻게 전달합니까?

분류에서Dev

keyDown 이벤트에서 누른 키 값을 어떻게 비교합니까?

분류에서Dev

파이썬에서 생성기를 사용하여 이터 러블을 어떻게 비교합니까?

분류에서Dev

사전에서 키 값을 어떻게 슬라이스합니까?

분류에서Dev

파이썬 사전에서 여러 최대 값을 어떻게 얻습니까?

분류에서Dev

여러 키 / 값을 기준으로 사전 목록을 정렬합니다. 여기서 값의 순서는 구체적이어야합니다.

분류에서Dev

사전의 키와 값을 json 배열에 어떻게 매핑합니까?

분류에서Dev

사전 키에 Null 값이있을 때 NSUserDefaults를 어떻게 저장합니까?

분류에서Dev

여러 사전 목록에있는 사전의 각 값에 대해 퍼지 검색을 구현하려면 어떻게해야합니까?

분류에서Dev

파이썬에서 if 조건 만 사용하여 목록의 값과 함수 값을 어떻게 비교할 수 있습니까?

분류에서Dev

키가 인덱스이고 값이 목록의 실제 요소 인 목록에서 사전을 어떻게 만들 수 있습니까?

분류에서Dev

사전 목록 열 필드에서 키 값 쌍을 기반으로 DataFrame 행을 어떻게 필터링합니까?

분류에서Dev

Spark의 맵 변환을 사용하여 Scala에서 여러 키-값 쌍을 반환하려면 어떻게해야합니까?

분류에서Dev

elem을 사용하여 목록의 각 요소를 어떻게 비교합니까?

분류에서Dev

AngularJS에서 키-값으로 json 목록을 어떻게 필터링합니까?

분류에서Dev

KDB + / Q : 각 값이 조건에 맞는 사전의 모든 항목 (키 + 값)을 어떻게 선택합니까?

분류에서Dev

여러 값이있는 키에서 특정 값을 얻으려면 어떻게해야합니까?

분류에서Dev

여러 목록에서 _na를 어떻게 교체합니까?

분류에서Dev

ASP.NET MVC에서 선택 목록을 사용하여 여러 값을 반환하려면 어떻게해야합니까?

분류에서Dev

Vbscript를 사용하여 Exists 메서드 사전에서 키 대신 값 항목으로 검색하려면 어떻게해야합니까?

분류에서Dev

Ansible을 사용하여 AWS Secrets Manager에서 키 / 값 암호를 어떻게 설정합니까?

분류에서Dev

전화 번호를 키로 사용하여 저장된 모든 공유 기본 설정을 목록보기에 표시하려면 어떻게합니까?

Related 관련 기사

  1. 1

    사전 목록에서 특정 키에 대한 고유 값을 찾으려면 어떻게합니까?

  2. 2

    사전 목록에서 키 / 값 쌍을 삭제하려면 어떻게해야합니까? Pandas env

  3. 3

    Python 목록의 키 값을 여러 사전과 비교

  4. 4

    공통 키에서 동일한 값을 가진 여러 사전 목록 병합

  5. 5

    Django 템플릿에서 목록을 값으로 사용하여 사전을 어떻게 반복합니까?

  6. 6

    두 목록을 서로 비교하고 C #을 사용하여 그에 따라 픽셀 값을 설정하려면 어떻게해야합니까?

  7. 7

    간단한 Odata 필터를 사용하여 목록의 값을 어떻게 비교합니까?

  8. 8

    여러 값을 쿼리에 어떻게 전달합니까?

  9. 9

    keyDown 이벤트에서 누른 키 값을 어떻게 비교합니까?

  10. 10

    파이썬에서 생성기를 사용하여 이터 러블을 어떻게 비교합니까?

  11. 11

    사전에서 키 값을 어떻게 슬라이스합니까?

  12. 12

    파이썬 사전에서 여러 최대 값을 어떻게 얻습니까?

  13. 13

    여러 키 / 값을 기준으로 사전 목록을 정렬합니다. 여기서 값의 순서는 구체적이어야합니다.

  14. 14

    사전의 키와 값을 json 배열에 어떻게 매핑합니까?

  15. 15

    사전 키에 Null 값이있을 때 NSUserDefaults를 어떻게 저장합니까?

  16. 16

    여러 사전 목록에있는 사전의 각 값에 대해 퍼지 검색을 구현하려면 어떻게해야합니까?

  17. 17

    파이썬에서 if 조건 만 사용하여 목록의 값과 함수 값을 어떻게 비교할 수 있습니까?

  18. 18

    키가 인덱스이고 값이 목록의 실제 요소 인 목록에서 사전을 어떻게 만들 수 있습니까?

  19. 19

    사전 목록 열 필드에서 키 값 쌍을 기반으로 DataFrame 행을 어떻게 필터링합니까?

  20. 20

    Spark의 맵 변환을 사용하여 Scala에서 여러 키-값 쌍을 반환하려면 어떻게해야합니까?

  21. 21

    elem을 사용하여 목록의 각 요소를 어떻게 비교합니까?

  22. 22

    AngularJS에서 키-값으로 json 목록을 어떻게 필터링합니까?

  23. 23

    KDB + / Q : 각 값이 조건에 맞는 사전의 모든 항목 (키 + 값)을 어떻게 선택합니까?

  24. 24

    여러 값이있는 키에서 특정 값을 얻으려면 어떻게해야합니까?

  25. 25

    여러 목록에서 _na를 어떻게 교체합니까?

  26. 26

    ASP.NET MVC에서 선택 목록을 사용하여 여러 값을 반환하려면 어떻게해야합니까?

  27. 27

    Vbscript를 사용하여 Exists 메서드 사전에서 키 대신 값 항목으로 검색하려면 어떻게해야합니까?

  28. 28

    Ansible을 사용하여 AWS Secrets Manager에서 키 / 값 암호를 어떻게 설정합니까?

  29. 29

    전화 번호를 키로 사용하여 저장된 모든 공유 기본 설정을 목록보기에 표시하려면 어떻게합니까?

뜨겁다태그

보관