사전에 값이 있는지 확인하는 방법
python 사전은 다음과 같습니다.
d = {'1': 'one', '3': 'three', '2': 'two', '5': 'five', '4': 'four'}
이 사전에서 "1"이나 "2"와 같은 값이 있는지 찾을 방법이 필요합니다.
예를 들어 인덱스 "1"이 존재하는지 알고 싶다면 다음과 같이 입력하면 됩니다.
"1" in d
그러면 python이 그것이 참인지 거짓인지 알려 주겠지만, 값이 존재하는지 확인하는 것 외에는 정확히 같은 작업을 수행해야 합니다.
>>> d = {'1': 'one', '3': 'three', '2': 'two', '5': 'five', '4': 'four'}
>>> 'one' in d.values()
True
참고로 몇 가지 비교 타이밍은 다음과 같습니다.
>>> T(lambda : 'one' in d.itervalues()).repeat()
[0.28107285499572754, 0.29107213020324707, 0.27941107749938965]
>>> T(lambda : 'one' in d.values()).repeat()
[0.38303399085998535, 0.37257885932922363, 0.37096405029296875]
>>> T(lambda : 'one' in d.viewvalues()).repeat()
[0.32004380226135254, 0.31716084480285645, 0.3171098232269287]
편집: 그리고 왜 그런지 궁금할 수도 있습니다.그 이유는 위의 각 오브젝트가 다른 타입의 오브젝트를 반환하기 때문입니다.이 오브젝트는 룩업 조작에 적합하거나 적합하지 않을 수 있습니다.
>>> type(d.viewvalues())
<type 'dict_values'>
>>> type(d.values())
<type 'list'>
>>> type(d.itervalues())
<type 'dictionary-valueiterator'>
EDIT2: 코멘트 요청에 따라...
>>> T(lambda : 'four' in d.itervalues()).repeat()
[0.41178202629089355, 0.3959040641784668, 0.3970959186553955]
>>> T(lambda : 'four' in d.values()).repeat()
[0.4631338119506836, 0.43541407585144043, 0.4359898567199707]
>>> T(lambda : 'four' in d.viewvalues()).repeat()
[0.43414998054504395, 0.4213531017303467, 0.41684913635253906]
파이썬 3에서는
"one" in d.values()
검사하다"one"
는 사전의 가치 중 하나입니다.
Python 2에서는 더 효율적으로
"one" in d.itervalues()
대신.
이렇게 하면 사전의 값을 통해 선형 스캔이 트리거되고 검색 즉시 단락되므로 키가 존재하는지 확인하는 것보다 효율성이 훨씬 떨어집니다.
Python 사전에는 get(key) 기능이 있습니다.
>>> d.get(key)
예를들면,
>>> d = {'1': 'one', '3': 'three', '2': 'two', '5': 'five', '4': 'four'}
>>> d.get('3')
'three'
>>> d.get('10')
None
키가 존재하지 않으면 키가 반환됩니다.None
가치.
foo = d[key] # raise error if key doesn't exist
foo = d.get(key) # return None if key doesn't exist
3.0 이전 버전 및 5.0 이상 버전과 관련된 콘텐츠입니다.
사전 보기 사용:
if x in d.viewvalues():
dosomething()..
값을 확인할 다른 유형이 있습니다.
d = {"key1":"value1", "key2":"value2"}
"value10" in d.values()
>> False
값 리스트가
test = {'key1': ['value4', 'value5', 'value6'], 'key2': ['value9'], 'key3': ['value6']}
"value4" in [x for v in test.values() for x in v]
>>True
문자열 값이 있는 값 목록이
test = {'key1': ['value4', 'value5', 'value6'], 'key2': ['value9'], 'key3': ['value6'], 'key5':'value10'}
values = test.values()
"value10" in [x for v in test.values() for x in v] or 'value10' in values
>>True
다음을 사용할 수 있습니다.
d = {'1': 'one', '3': 'three', '2': 'two', '5': 'five', '4': 'four'}
print("one" in d.values)
또는 다음과 같은 기능을 사용할 수 있습니다.
print(any([True for i,j in d1.items() if j == "one"]))
Python 3에서는values()
사전의 기능.값의 뷰 개체를 반환합니다.이것은, 다음에, 에 건네질 수 있습니다.iter
반복기 개체를 반환하는 함수입니다.반복기는 다음을 사용하여 확인할 수 있습니다.in
,이것처럼.
'one' in iter(d.values())
또는 목록과 비슷하므로 보기 개체를 직접 사용할 수 있습니다.
'one' in d.values()
언급URL : https://stackoverflow.com/questions/8214932/how-to-check-if-a-value-exists-in-a-dictionary
'programing' 카테고리의 다른 글
PhpMyAdmin을 사용한 Nginx(SSL을 통해 보안 보호) (0) | 2022.10.29 |
---|---|
현재 날짜 + 7일 반환 (0) | 2022.10.19 |
"없음"과 "== 없음"의 차이점은 무엇입니까? (0) | 2022.10.19 |
부동 값에 접미사 'f'를 사용하는 이유는 무엇입니까? (0) | 2022.10.19 |
함수가 발신자가 인식하는 일부 인수를 변경할 수 있지만 다른 인수는 변경할 수 없는 이유는 무엇입니까? (0) | 2022.10.19 |