teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

追記

2019/04/13 07:19

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -27,4 +27,7 @@
27
27
  return False
28
28
 
29
29
  return True
30
- ```
30
+ ```
31
+
32
+ あるいは辞書を作るとき、空白のみの文字列を書き込まずにNoneを使うようにしても良いです。
33
+ これなら `if not dic.get('test'):` で済みます。

3

修正

2019/04/13 07:18

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -23,7 +23,7 @@
23
23
  if value is None:
24
24
  return False
25
25
 
26
- if value.strip() == "":
26
+ if value.strip() == '':
27
27
  return False
28
28
 
29
29
  return True

2

追記

2019/04/13 07:14

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -3,4 +3,28 @@
3
3
  > ######get(key[, default])
4
4
  key が辞書にあれば key に対する値を、そうでなければ default を返します。 default が与えられなかった場合、デフォルトでは None となります。そのため、このメソッドは KeyError を送出することはありません。
5
5
 
6
- 引用元:[Python 標準ライブラリ » 組み込み型 - マッピング型 --- dict](https://docs.python.org/ja/3/library/stdtypes.html#dict.get)
6
+ 引用元:[Python 標準ライブラリ » 組み込み型 - マッピング型 --- dict](https://docs.python.org/ja/3/library/stdtypes.html#dict.get)
7
+
8
+ コメントを受けて
9
+ ---
10
+ > dic = {"hello": "hello"}
11
+ dic = {"test": ""}
12
+ dic = {"test": " "}
13
+ dic = {"test": None}
14
+ 挙げているdicのパターンはすべてerrorにしたいです
15
+
16
+ 条件が複雑で面倒なので、判定用の関数を用意しましょう。
17
+ ```Python
18
+ def is_valid_dic(dic):
19
+ if 'test' not in dic:
20
+ return False
21
+
22
+ value = dic['test']
23
+ if value is None:
24
+ return False
25
+
26
+ if value.strip() == "":
27
+ return False
28
+
29
+ return True
30
+ ```

1

修正

2019/04/13 07:14

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -1,1 +1,6 @@
1
- `if dic.get('test') == "":` とかですかね。
1
+ `if dic.get('test') == '':` とかですかね。
2
+
3
+ > ######get(key[, default])
4
+ key が辞書にあれば key に対する値を、そうでなければ default を返します。 default が与えられなかった場合、デフォルトでは None となります。そのため、このメソッドは KeyError を送出することはありません。
5
+
6
+ 引用元:[Python 標準ライブラリ » 組み込み型 - マッピング型 --- dict](https://docs.python.org/ja/3/library/stdtypes.html#dict.get)