質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Q&A

解決済

2回答

902閲覧

python2.7:辞書の値が配列の場合の処理

noz_awsinf_sp

総合スコア62

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

0グッド

0クリップ

投稿2019/05/06 04:17

webAPIのレスポンスが辞書型で返ってきます。
その際、取得したいキーの値が、配列形式となっており、値がある場合と無い場合(空の配列はある状態)で処理を分岐させたいです。

==値がない場合==
x = {
'A': [],
'B': 'b'
}

==値がある場合===
x = {
'A': ['a'],
'B': 'b'
}
上記の通り、値がない場合でも、'A'キーの中には必ず空の配列があるようで
if x.get('A') is None:
print('None')
else:
print(x['A'])
を試したところ、おそらく空の配列は存在するので、else分岐を通ってしまいます。

どのように分岐条件を設定すればよいかご教授ください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

キー'A'の値が必ずリストなのならば、if x['a']: で充分です。
空リストはfalsyですので。

######真理値判定

どのオブジェクトも真理値を判定でき、 if や while 条件に、または以下のブール演算の被演算子に使えます。以下の値は偽と見なされます:

  • None
  • False
  • 数値型におけるゼロ。例えば 0, 0L, 0.0, 0j 。
  • 空のシーケンス。例えば '', (), [] 。
  • 空のマッピング。例えば {} 。
  • ユーザ定義クラスのインスタンスで、そのクラスが __nonzero__() または __len__() メソッドを定義していれば、それらのメソッドが整数 0 または bool 値 False を返すとき。 [1]

それ以外の全ての値は真と見なされます --- 従って、多くの型のオブジェクトは常に真です。

引用元Python(2.7) 標準ライブラリ » 組み込み型参考Python3

投稿2019/05/06 04:56

編集2019/05/06 05:17
LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

siruku6

2019/05/06 05:01

>空リストはfalsy 知りませんでした。 勉強になります。
guest

0

if x.get('A') is None:
の部分を
if x.get('A') == []: や if x['a'] == []:
にしてみてはいかがでしょうか?

これで key'A' のvalueが空配列であるか否かの条件分岐になると思います。

投稿2019/05/06 04:24

編集2019/05/06 04:25
siruku6

総合スコア1382

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問