Python: '사전'이 비어 있는지 확인하는 것이 작동하지 않는 것 같습니다.
사전이 비어 있는지 확인하려고 하는데 제대로 작동하지 않아요.메시지를 표시하는 것 외에는 아무것도 없이 생략하고 ONLINE을 표시합니다.왜 그런지 알아요?
def isEmpty(self, dictionary):
for element in dictionary:
if element:
return True
return False
def onMessage(self, socket, message):
if self.isEmpty(self.users) == False:
socket.send("Nobody is online, please use REGISTER command" \
" in order to register into the server")
else:
socket.send("ONLINE " + ' ' .join(self.users.keys()))
Python의 빈 사전 평가:
>>> dct = {}
>>> bool(dct)
False
>>> not dct
True
>>>
따라서, 당신의isEmpty
기능은 불필요합니다.필요한 것은 다음과 같습니다.
def onMessage(self, socket, message):
if not self.users:
socket.send("Nobody is online, please use REGISTER command" \
" in order to register into the server")
else:
socket.send("ONLINE " + ' ' .join(self.users.keys()))
다음은 dict가 비어 있는지 확인할 수 있는 세 가지 방법입니다.하지만 저는 첫 번째 방법만 사용하는 것을 선호합니다.다른 두 가지 방법은 너무 말이 많다.
test_dict = {}
if not test_dict:
print "Dict is Empty"
if not bool(test_dict):
print "Dict is Empty"
if len(test_dict) == 0:
print "Dict is Empty"
dict = {}
print(len(dict.keys()))
길이가 0이면 dict가 비어 있음을 의미합니다.
빈 딕트를 확인하는 간단한 방법은 다음과 같습니다.
a= {}
1. if a == {}:
print ('empty dict')
2. if not a:
print ('empty dict')
a = none일 때처럼 방법 1st가 더 엄격하지만 방법 1은 올바른 결과를 제공하지만 방법 2는 잘못된 결과를 제공합니다.
사전은 다음과 같이 평가되는 부울에 자동으로 캐스팅할 수 있습니다.False
빈 사전과True
빈 사전이 아닌 경우.
if myDictionary: non_empty_clause()
else: empty_clause()
이것이 너무 관용적으로 보이면 테스트도 할 수 있습니다.len(myDictionary)
제로, 또는set(myDictionary.keys())
빈 집합의 경우 또는 단순히 와 동등함을 검정합니다.{}
.
is Empty 함수는 불필요할 뿐만 아니라 구현에 여러 가지 문제가 있어 prima-facy를 찾을 수 있습니다.
- 그
return False
문이 한 단계 너무 깊게 들여쓰기되었습니다.포루프 외부에 있으며, 같은 레벨에 있어야 합니다.for
진술.그 결과, 키가 존재하는 경우 코드는 임의로 선택된 키를 하나만 처리합니다.키가 존재하지 않으면 함수가 반환됩니다.None
부울 False로 캐스트됩니다.이런! 빈 사전은 모두 가짜로 분류될 것입니다. - 사전이 비어 있지 않으면 코드는 하나의 키만 처리하고 값 캐스트를 부울로 반환합니다.호출할 때마다 동일한 키가 평가된다고 가정할 수도 없습니다.그래서 잘못된 긍정들이 있을 겁니다.
- 예를 들어, 당신이 의 들여쓰기를 수정했다고 가정해 봅시다.
return False
스테이트먼트를 외부로 가져와서for
그러면 모든 키의 부울 OR이 됩니다.False
사전이 비어 있는 경우.여전히 잘못된 긍정과 잘못된 부정의 결과가 있을 것입니다.다음 사전을 참고하여 증거를 정정한 후 시험해 보세요.
myDictionary={0:'zero', '':'Empty string', None:'None value', False:'Boolean False value', ():'Empty tuple'}
단방향:
len(given_dic_obj)
요소가 없으면 0을 반환합니다.그렇지 않으면 사전 크기를 반환합니다.
두 번째 방법:
bool(given_dic_object)
사전이 비어 있으면 False를 반환하고 그렇지 않으면 True를 반환합니다.
get()을 사용할 수도 있습니다.처음에는 열쇠가 있는지 확인만 하는 줄 알았어요.
>>> d = { 'a':1, 'b':2, 'c':{}}
>>> bool(d.get('c'))
False
>>> d['c']['e']=1
>>> bool(d.get('c'))
True
get을 사용하면 예외를 트리거하지 않기 때문에 큰 구조물을 쉽게 통과할 수 있습니다.
test_dict = {}
if not test_dict.keys():
print "Dict is Empty"
any를 사용하다
dict = {}
if any(dict) :
# true
# dictionary is not empty
else :
# false
# dictionary is empty
언급URL : https://stackoverflow.com/questions/23177439/python-checking-if-a-dictionary-is-empty-doesnt-seem-to-work
'source' 카테고리의 다른 글
boto3를 사용하여 버킷 내용 나열 (0) | 2023.01.22 |
---|---|
SimpleXML 개체를 배열로 변환하는 방법 (0) | 2023.01.22 |
버튼을 클릭해서 PHP 함수를 호출하는 방법 (0) | 2023.01.22 |
포괄적인 초보자용 virtualenv 튜토리얼? (0) | 2023.01.22 |
Spring Boot 응용 프로그램을 프로그래밍 방식으로 셧다운합니다. (0) | 2023.01.22 |