[解決済み】Pythonの変数の型を確認する最良の(慣用的な)方法は何ですか?[重複している]。
2022-03-25 16:23:08
質問
Pythonの変数が文字列かdictか知りたいのですが。 次のコードに何か問題がありますか?
if type(x) == type(str()):
do_something_with_a_string(x)
elif type(x) == type(dict()):
do_somethting_with_a_dict(x)
else:
raise ValueError
更新情報
: avisserの回答を受け入れました(ただし、誰かが理由を説明すれば、考えを変えます)。
isinstance
よりも優先されます。
type(x) is
).
しかし、if/elif/elseの連番よりもdictを(case文として)使ったほうがきれいな場合が多いことを教えてくれたnakedfanaticに感謝します。
私のユースケースを詳しく説明します。 変数が文字列の場合、それをリストに入れる必要があります。 dictの場合は、一意な値のリストが必要です。 私が思いついたのは次のようなものです。
def value_list(x):
cases = {str: lambda t: [t],
dict: lambda t: list(set(t.values()))}
try:
return cases[type(x)](x)
except KeyError:
return None
もし
isinstance
が望ましいとされていますが、どのように書くのでしょうか?
value_list()
という関数があります。
どのように解決するのですか?
誰かがあなたの関数にUnicode文字列を渡した場合、何が起こるのでしょうか?あるいは dict から派生したクラスですか? あるいは、dict のようなインタフェースを実装したクラスはどうなるでしょうか? 以下のコードは最初の2つのケースをカバーしています。Python 2.6 を使っている場合は
collections.Mapping
の代わりに
dict
のように
ABC PEP
.
def value_list(x):
if isinstance(x, dict):
return list(set(x.values()))
elif isinstance(x, basestring):
return [x]
else:
return None
関連
-
[解決済み】TypeError: 系列を <class 'float'> に変換することができません。
-
[解決済み】TypeErrorを取得しました。エントリを持つ子テーブルの後に親テーブルを追加しようとすると、 __init__() missing 1 required positional argument: 'on_delete'
-
[解決済み】ValueError: pickleプロトコルがサポートされていません。3、python2 pickleはpython3 pickleでダンプしたファイルを読み込むことができない?
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonのリストメソッドであるappendとextendの違いは何ですか?
-
[解決済み] オブジェクトの種類を決定しますか?
-
[解決済み] Pythonで型をチェックする標準的な方法は何ですか?
-
[解決済み】__str__と__repr__の違いは何ですか?
-
[解決済み】type()とisinstance()の違いは何ですか?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Python機械学習Githubが8.9Kstarsに達したモデルインタープリタLIME
-
任意波形を生成してtxtで保存するためのPython実装
-
PythonでECDSAを実装する方法 知っていますか?
-
[解決済み】DataFrameのコンストラクタが正しく呼び出されない!エラー
-
[解決済み】TypeErrorの修正方法。Unicodeオブジェクトは、ハッシュ化する前にエンコードする必要がある?
-
[解決済み】なぜ「LinAlgError: Grangercausalitytestsから「Singular matrix」と表示されるのはなぜですか?
-
[解決済み] データ型が理解できない
-
[解決済み】Python: OverflowError: 数学の範囲エラー
-
[解決済み】ValueError: xとyは同じサイズでなければならない
-
[解決済み】type()とisinstance()の違いは何ですか?)