Python Dictionary에서 값으로 키를 얻는 방법을 살펴보겠습니다.
예: 한 줄짜리 코드
파이썬3
# creating a new dictionary> my_dict>=>{>'Java'>:>100>,>'Python'>:>112>,>'C'>:>11>}> # one-liner> print>(>'One line Code Key value: '>,>list>(my_dict.keys())> >[>list>(my_dict.values()).index(>100>)])> |
>
>
산출:
Java>
값을 사용하여 Python 사전에서 키 추출
방법 1: 목록 이해를 사용하여 값으로 키 가져오기
목록 이해는 표현식을 포함하는 대괄호로 구성됩니다. 이 표현식은 for 루프와 함께 각 요소에 대해 실행되어 Python 목록의 각 요소를 반복하여 값에서 키를 가져옵니다. 사전 .
파이썬3
자바의 예외 처리
dic>=>{>'geeks'>:>'A'>,>'for'>:>'B'>,>'geeks'>:>'C'>}> value>=> {i>for> i>in> dic>if> dic[i]>=>=>'B'>}> print>(>'key by value:'>,value)> |
>
>
산출:
key by value: {'for'}> 시간 복잡도: 에)
보조 공간: 오(1)
방법 2: list.index()를 사용하여 값으로 키 가져오기
그만큼 index() 메서드 목록에서 해당 값의 인덱스를 반환합니다. 여기서 사용되는 접근 방식은 두 개의 개별 키와 값 목록을 찾는 것입니다. 그런 다음 다음을 사용하여 키를 가져옵니다. 위치 가치의 val_list에 있습니다. key_list의 N 위치에 있는 키는 val_list의 N 위치에 해당 값을 갖습니다.
파이썬3
# creating a new dictionary> my_dict>=>{>'java'>:>100>,>'python'>:>112>,>'c'>:>11>}> # list out keys and values separately> key_list>=> list>(my_dict.keys())> val_list>=> list>(my_dict.values())> # print key with val 100> position>=> val_list.index(>100>)> print>(key_list[position])> |
>
알파벳의 숫자
>
산출:
java>
시간 복잡도: 오(1)
보조 공간: 오(1)
방법 3: dict.item()을 사용하여 값으로 키 가져오기
dict.item()을 사용하여 모든 값을 일치시킨 다음 해당 키를 주어진 값에 인쇄하여 값에서 키를 가져올 수도 있습니다.
파이썬3
# function to return key for any value> def> get_key(val):> > >for> key, value>in> my_dict.items():> >if> val>=>=> value:> >return> key> >return> 'key doesn't exist'> # Driver Code> my_dict>=> {>'Java'>:>100>,>'Python'>:>112>,>'C'>:>11>}> print>(get_key(>100>))> print>(get_key(>11>))> |
>
>산출
Java C>
시간 복잡도: O(n), 여기서 n은 사전에 있는 키-값 쌍의 수입니다.
보조 공간: O(1), 함수가 사용하는 공간은 입력 사전의 크기에 의존하지 않기 때문입니다.
방법 4: 람다 및 filter() 사용
다음은 사전의 값에 해당하는 키를 가져오기 위해 filter() 함수를 사용하는 예입니다.
파이썬3
my_dict>=> {>'Java'>:>100>,>'Python'>:>112>,>'C'>:>11>}> # Get the key corresponding to value 100> key>=> list>(>filter>(>lambda> x: my_dict[x]>=>=> 100>, my_dict))[>0>]> print>(key)> #This code is contributed by Edula Vinay Kumar Reddy> |
>
>산출
Java>
이 예에서는 filter() 함수를 사용하여 값이 100인 my_dict에서 키 목록을 생성합니다. 그런 다음 결과 목록은 위치 0에서 인덱싱되어 값에 해당하는 키인 첫 번째 요소를 가져옵니다. 100.
시간 복잡도: O(n) , filter() 함수는 키 목록을 생성하기 위해 전체 사전을 반복해야 하기 때문입니다.
보조 공간은 O(n) , filter()에 의해 생성된 키 목록의 크기는 사전의 요소 수와 동일합니다.
방법 5: 아이템 사용 방법
이 코드는 목록 이해를 사용하여 사전의 항목을 반복하고 값이 주어진 값과 일치하는지 확인하여 사전에서 주어진 값의 키를 찾습니다. 키가 발견되면 목록에 추가되고 목록의 첫 번째 요소가 지정된 값에 대한 키로 인쇄됩니다. 사전에서 값을 찾을 수 없으면 해당 값을 찾을 수 없다는 메시지가 인쇄됩니다.
단계:
- my_dict의 각 키-값 쌍을 반복하려면 사전의 items 메소드를 사용하십시오.
- 현재 키와 연결된 값이 지정된 값과 같은지 확인하세요.
- 동일하면 현재 키를 키 목록에 추가합니다.
- 일치하는 값을 찾지 못한 채 루프가 완료되면 값을 찾을 수 없다는 메시지를 인쇄합니다.
- 일치하는 키가 발견되면 목록의 첫 번째 키를 인쇄합니다.
파이썬3
# input list> my_dict>=> {>'Java'>:>100>,>'Python'>:>112>,>'C'>:>11>}> value>=> 112> key_list>=> [key>for> key, val>in> my_dict.items()>if> val>=>=> value]> if> len>(key_list)>>0>:> >print>(>'The key for the value'>, value,>'is'>, key_list[>0>])> else>:> >print>(>'Value not found in dictionary'>)> |
>
int를 문자열 java로 변환하는 방법
>산출
The key for the value 112 is Python>
시간 복잡도: O(N), 여기서 n은 사전에 있는 키-값 쌍의 수입니다.
보조공간 : O(K) , 여기서 k는 주어진 값과 일치하는 키의 수입니다.
방법 6: re 모듈 사용
프로그램은 Python의 re 모듈을 사용하여 주어진 값에 해당하는 사전에서 키를 찾습니다. 단어 경계로 둘러싸인 값과 일치하는 정규식 패턴을 만든 다음 next() 함수를 사용하여 사전의 항목을 반복하고 패턴과 일치하는 값을 검색합니다. 일치하는 항목이 발견되면 프로그램은 해당 키를 반환합니다.
연산:
- 단어 경계로 둘러싸여 찾고 있는 값과 일치하는 정규식 패턴을 만듭니다.
- next() 함수를 사용하여 사전의 항목을 반복하면서 패턴과 일치하는 값을 검색합니다.
- 일치하는 항목이 발견되면 해당 키를 반환합니다. 그렇지 않으면 None을 반환합니다.
파이썬3
import> re> # Given input> my_dict>=> {>'Java'>:>100>,>'Python'>:>112>,>'C'>:>11>}> value>=> 100> # Program code> pattern>=> re.>compile>(r>''> +> str>(value)>+> r>''>)> key>=> next>((k>for> k, v>in> my_dict.items()>if> pattern.search(>str>(v))),>None>)> print>(key)> |
>
>산출
Java>
시간 복잡도: O(N), 정규식 패턴을 만드는 데는 O(1) 시간이 걸립니다. 각 사전 항목의 패턴과 일치하는 값을 검색하는 데 최악의 경우 O(n) 시간이 걸립니다. 여기서 n은 사전의 항목 수입니다. next() 함수와 if 문은 각각 O(1) 시간이 걸립니다. 따라서 프로그램의 전체 시간복잡도는 O(n)이다.
보조 공간: O(1), 정규식 패턴과 키 변수에는 각각 O(1) 공간이 필요합니다. 패턴 변수와 next() 함수 내부의 생성기 표현식에는 모두 O(1) 공간이 필요합니다. 생성기 표현식에 사용된 k 및 v 변수는 반복의 일부로 생성되므로 추가 공간이 필요하지 않습니다. 따라서 프로그램의 전체 공간 복잡도는 O(1)입니다.