내가 원하는 값을 업데이트 전에 사전 테스트하려면 존재하는 경우 주요 핵심. 내가 쓴 다음 코드:
if 'key1' in dict.keys():
print "blah"
else:
print "boo"
내 생각엔 이 작업을 수행하는 가장 좋은 방법은 아니다. 사전에 키의 테스트하려면 더 나은 방법이 있나요?
'에서' 는 '핵심' 의 존재를 테스트하려면 운행에서어떠한 고안되었습니다 딕트.
d = dict()
for i in range(100):
key = i % 10
if key in d:
d[key] += 1
else:
d[key] = 1
항상 flfile. 딕트리제 () ',' 그들이성년에 경우 기본 수 있습니다.
d = dict()
for i in range(100):
key = i % 10
d[key] = d.get(key, 0) + 1
. 만일 당신이 원하는 모든 주요 수 있도록 항상 '에서' 모음 '데포트디스 기본값입니다 사용할 수 있습니다' 같은 모듈에서는 있습니다.
from collections import defaultdict
d = defaultdict(int)
for i in range(100):
d[i % 10] += 1
. 그러나 일반적으로 '키워드' 에서 이를 위한 가장 좋은 방법입니다.
if 'key1' in dict:
print "blah"
else:
print "boo"
빠른 많은 되는 것처럼, s # 39 는 dictionary& 하고 있으며, 반대로 호출하십시오 키 해싱 선형 검색 할 수 있을 것 "이라고 말했다.
키를 사용하여 존재를 위한 사전 테스트할 수 있습니다, b> < in< /b>;; 키워드:
d = {'a': 1, 'b': 2}
'a' in d # <== evaluates to True
'c' in d # <== evaluates to False
대표적인 활용) 의 존재를 확인하는 것이 기본 초기화하지 억제하는 전에 사전 키 값 (예를 들면 경우 값은 열거합니다 예를 들어, 않도록 하려면 문제가 발생할 수 있는 첫 번째 값을 삽입할 때 빈 목록 덮어쓰기/추가 키의). 이와 같은 경우, a href = https://docs.python.org/2/library/collections.html # collections.defaultdict" > " < 찾을 수 있습니다;;;;;;;;; /a> < /code> < < code> 콜레스티론스데포트디스 () 유형 관심.
그 이전 코드를 사용하는 방법을 찾을 수도 있습니다 () ',' 는 일부 has_key 사용되지 않는 존재를 확인하는 사전에서 키 ('에서' 대신 dict_name key_name 됩니다).
난 '이 아닌' 세드포트 방법을 사용하는 것이 좋습니다. 이 말은 운영까지도 모든 일을 다 할 것입니다.
>>> d = {'foo':'bar'}
>>> q = d.setdefault('foo','baz') #Do not override the existing key
>>> print q #The value takes what was originally in the dictionary
bar
>>> print d
{'foo': 'bar'}
>>> r = d.setdefault('baz',18) #baz was never in the dictionary
>>> print r #Now r has the value supplied above
18
>>> print d #The dictionary's been updated
{'foo': 'bar', 'baz': 18}
어떤 격자선 이프프 (용서를 더 이상 사용 권한):
try:
blah = dict["mykey"]
# key exists in dict
except KeyError:
# key doesn't exist in dict
그래서 다른 지켜보리니 포스트:
https://stackoverflow.com/questions/1835756/using-try-vs-if-in-python 또는
https://stackoverflow.com/questions/204308/checking-for-member-existence-in-python
자세한 정보: http://paltman.com/try-except-performance-in-python-a-simple-test/
try:
my_dict_of_items[key_i_want_to_check]
except KeyError:
# Do the operation you wanted to do for "key not present in dict".
else:
# Do the operation you wanted to do with "key present in dict."
[1]: https://docs.python.org/3.1/whatsnew/3.0.html # 기본 제공
< H2>, 파이썬, 2 만: (및 파이썬 2.7 汲摹窍妨绰 '에서' 이미) < /H2>;
has_key () 메서드를 사용할 수 있습니다.
if dict.has_key('xyz')==1:
#update the value for the key
else:
pass
>. # 확인란 해당 키 이미 사전
아이디어를 얻기 위해 우리가 할 수 있는 어떤 방법으로 부를 수 있는 사전이므로 먼저 검사 방법 다음은 방법:
d={'clear':0, 'copy':1, 'fromkeys':2, 'get':3, 'items':4, 'keys':5, 'pop':6, 'popitem':7, 'setdefault':8, 'update':9, 'values':10}
Python Dictionary clear() Removes all Items
Python Dictionary copy() Returns Shallow Copy of a Dictionary
Python Dictionary fromkeys() Creates dictionary from given sequence
Python Dictionary get() Returns Value of The Key
Python Dictionary items() Returns view of dictionary (key, value) pair
Python Dictionary keys() Returns View Object of All Keys
Python Dictionary pop() Removes and returns element having given key
Python Dictionary popitem() Returns & Removes Element From Dictionary
Python Dictionary setdefault() Inserts Key With a Value if Key is not Present
Python Dictionary update() Updates the Dictionary
Python Dictionary values() Returns view of all values in dictionary
이들의 잔혹한 방법으로 얻을 수 있는지 확인하는 주요 이미 ' ()' 방법:
d.get("key")
d= {'clear':0, 'copy':1, 'fromkeys':2, 'get':3, 'items':4, 'keys':5, 'pop':6, 'popitem':7, 'setdefault':8, 'update':9, 'values':10}
print(d.get('key')) #None
print(d.get('clear')) #0
print(d.get('copy')) #1
우리는 strike> may< /strike> <;;; 정보를 얻기 위해 사용하는 경우 키 (key) 는 현재 또는 아닙니다. 그러나 이 경우 한 번의 '우리가 만든 딕트 고려해보십시오 주요 컨투어로 없음':
d= {'key':None}
print(d.get('key')) #None
print(d.get('key2')) #None
주요 일부 값을 얻을 수 있는 '신뢰할 수 있는 방법을 사용하지 않는 경우 ()' '없음'. 이 이야기는 기간말 더 있어야 합니다. 만약 우리가 사용하는 '에서' 비교자:
print('key' in d) #True
print('key2' in d) #False
우리 정확한 결과를 얻을 수 있습니다. 파이썬 바이트 코드 검사할 수 있습니다.
import dis
dis.dis("'key' in d")
# 1 0 LOAD_CONST 0 ('key')
# 2 LOAD_NAME 0 (d)
# 4 COMPARE_OP 6 (in)
# 6 RETURN_VALUE
dis.dis("d.get('key2')")
# 1 0 LOAD_NAME 0 (d)
# 2 LOAD_METHOD 1 (get)
# 4 LOAD_CONST 0 ('key2')
# 6 CALL_METHOD 1
# 8 RETURN_VALUE
그보다 더 신뢰할 수 있는 것은 단지 이 보여주는 '에서' 보다 '프레젠테이션이든 비교 연산자 ()'.
Python 은 메서드로부터 contains 불렀으매 '사전'. 이 방법은 다른 키를 가지고 있으면 참 반환되므로 사전에 되돌려줍니다 거짓값.
>>> temp = {}
>>> help(temp.__contains__)
Help on built-in function __contains__:
__contains__(key, /) method of builtins.dict instance
True if D has a key k, else False.
한 번 더 있는지 확인하는 방법을 사용하여 부울을 공유함을 주요 존재하는 것으로 알려졌다.
d = {'a': 1, 'b':2}
keys = 'abcd'
for k in keys:
x = (k in d and 'blah') or 'boo'
print(x)
이 되돌려줍니다
>>> blah
>>> blah
>>> boo
>>> boo
그런 점에서 '없음' 또는 '0', 파이썬, 먼저 알아야 할 길이 평가하십시오 객체에는 제로 'False' 로. 다른 건 다 로 평가되는 'True'. 왼쪽에서 오른쪽, 진실 혹은 거짓 없는 반품해야 피연산자를 부울입니다 운영체 평가됩니다.
>>> 'Some string' or 1/0
'Some string'
>>>
먼저 '주문' 1/0 신앙이니라 바꿔요 검사됩니다 예외를 던진다.
>>> 1/0 or 'Some string'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero
>>>
이 경우 우리가 사용할 수 있는 중요한 체크 패턴이 있습니다.
(k in d and 'blah')
동일합니까 않습니다.
if k in d:
'blah'
else:
False
이 경우 이미 되돌려줍니다 인쇄하려면 & # 39 이 올바른 결과를 주요 존재하지만, 우리가 원하는 boo& # 39. # 39 doesn& 때, t. 그래서 우리는 이 문제를 '& # 39 boo& 시행하십시오 결과,' 또는 ',' # 39.
>>> False or 'boo'
'boo'
>>> 'blah' or 'boo'
'blah'
>>>
반복할 수 있으며, 루프 '를 사용할 수 있습니다' 우리말 이름을 찾을 수 있는지, 이후에는 주요 운영까지도 사용하지 않을 경우 해당 사전에서 '또는' 조건:
dic = {'first' : 12, 'second' : 123}
for each in dic:
if each == 'second':
print('the key exists and the corresponding value can be updated in the dictionary')