이 글은 python3(코드)에서 setdefault의 사용법을 소개합니다. 이는 특정 참조 값을 가지고 있습니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.
사전 d[k]가 올바른 키를 찾을 수 없으면 Python에서 예외를 발생시킵니다. 이를 방지할 수 있는 우아한 방법이 있습니까? 대답은 '예'입니다.
index0.py 색인에서 단어 발생 빈도 정보를 가져와서 목록 -- dict.setdefault
#!/usr/bin/env python # coding=utf-8 import sys, re WORD_RE = re.compile(r'\w+') index = {} with open(sys.argv[1], encoding='utf-8') as fp: for line_no, line in enumerate(fp, 1): for match in WORD_RE.finditer(line): word = match.group() column_no = match.start()+1 location = (line_no, column_no) occurrences = index.get(word, []) occurrences.append(location) index[word] = occurrences for word in sorted(index, key=str.upper): print(word, index[word])
The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren't special enough to break the rules. Although practicality beats purity. Errors should never pass silently. Unless explicitly silenced. In the face of ambiguity, refuse the temptation to guess. There should be one-- and preferably only one --obvious way to do it. Although that way may not be obvious at first unless you're Dutch. Now is better than never. Although never is often better than *right* now. If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea. Namespaces are one honking great idea -- let's do more of those!
a [(19, 48), (20, 53)] Although [(11, 1), (16, 1), (18, 1)] ambiguity [(14, 16)] and [(15, 23)] are [(21, 12)] aren [(10, 15)] at [(16, 38)] bad [(19, 50)] be [(15, 14), (16, 27), (20, 50)] beats [(11, 23)] Beautiful [(3, 1)] better [(3, 14), (4, 13), (5, 11), (6, 12), (7, 9), (8, 11), (17, 8), (18, 25)] break [(10, 40)] by [(1, 20)] cases [(10, 9)] ...
#!/usr/bin/env python # coding=utf-8 import sys, re WORD_RE = re.compile(r'\w+') index = {} with open(sys.argv[1], encoding='utf-8') as fp: for line_no, line in enumerate(fp, 1): for match in WORD_RE.finditer(line): word = match.group() column_no = match.start()+1 location = (line_no, column_no) index.setdefault(word, []).append(location) for word in sorted(index, key=str.upper): print(word, index[word])
my_dict.setdefault(key, []).append(new_value)
if key not in my_dict: my_dict[key] = [] my_dict[key].append(new_value)
와 동일합니다. 둘은 동일한 효과를 갖습니다. 단, setdefault는 전체 작업을 한 번만 완료하면 되고 후자는 두 개의 쿼리가 필요합니다.
관련 권장 사항:setdefault() 메서드를 사용하여 Python에서 사전 작동
Python3에서 super() 및 __class__ 사용 소개
위 내용은 python3(코드)에서 setdefault 사용법 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!