- Python 辞書 はキーと値のペアを保存し、そのキーによって値を非常に迅速に検索します。
- 角括弧を使用すると
KeyErrorが表示されるため、キーが欠落している可能性がある場合はget()を使用します。 - キーは、文字列、数値、タプルなど、ハッシュ可能である必要があります。リストをキーにすることはできません。
copy()は浅いため、deepcopyを使用しない限り、ネストされたデータは共有されたままになります。
リストが番号付きボックスの行である場合、Python 辞書 はラベル付きのボックスのセットです。必要なものを位置ではなく名前で要求します。そのため、辞書は JSON データ、構成、キャッシュ、および Python 自体の多くの背後に配置されます。
このチュートリアルは基本から始まり、経験豊富な開発者が毎日使用するパターンに進みます。すべての例を Python 3.13 で実行し、示されている出力はその実行からのものです。
辞書とは何ですか?
辞書、つまり dict は、キーを値にマッピングします。各キーは 1 回だけ出現し、値はリストや他の辞書を含む任意の値にすることができます。
| 種類 | アクセス方法 | 注文済み | 重複 | こんな方に最適 |
|---|---|---|---|---|
リスト |
ポジション | はい | 許可される | シーケンス |
タプル |
ポジション | はい | 許可される | 固定レコード |
セット |
会員限定 | いいえ | 許可されていません | ユニークなアイテム |
辞書 |
キー | 広告掲載オーダー | キーはユニークです | 名前による検索 |
Python 3.7 以降、辞書は正式に挿入順序を保持します。古いチュートリアルの多くは依然としてそれらを順序なしと呼んでいますが、これはもはや真実ではありません。他の型のより広範な比較については、Python リスト、タプル、セット を参照してください。
辞書はハッシュ テーブルを使用するため、検索は高速です。キーのチェックには、辞書に項目が 10 個でも 100 万個でもほぼ同じ時間がかかりますが、リストの検索はサイズが大きくなるにつれて遅くなります。
辞書を作成する
user = {"name": "Asha", "age": 31, "city": "Pune"}
empty = {}
from_keywords = dict(name="Asha", age=31)
from_pairs = dict([("a", 1), ("b", 2)])
中括弧は最も一般的な形式です。 1 つの罠: {} は空のセットではなく、空の辞書を作成します。空のセットの場合は set() が必要です。
値を安全に読み取る
値を読み取るには 2 つの方法があり、キーが存在しない可能性がある場合にはその違いが重要になります。
user["name"] # 'Asha'
user["email"] # KeyError: 'email'
user.get("email") # None
user.get("email", "not set") # 'not set'
キーが存在する必要がある場合は角括弧を使用して、キーが見つからない場合に大声で失敗するようにします。 API 応答のオプション フィールドなど、欠席が通常の場合は get() を使用します。キーを確認するには、値ではなくキーを調べる in 演算子を使用します。
"city" in user # True
"Pune" in user # False
追加、更新、削除
キーに割り当てると、キーが存在する場合は更新され、存在しない場合は追加されます。
user["age"] = 32
user["email"] = "asha@example.com"
print(user)
# {'name': 'Asha', 'age': 32, 'city': 'Pune', 'email': 'asha@example.com'}
Python では、項目を削除するいくつかの方法が提供されています。
user.pop("city") # returns 'Pune' and removes it
user.pop("phone", None) # no error if it is missing
del user["email"] # removes it, and raises KeyError if missing
user.clear() # empties the dictionary
値を戻したい場合はpop()を使用します。 2 番目の引数としてデフォルトを渡すと、キーが存在しない場合のエラーが回避されます。 popitem() は、最後に追加されたペアを削除して返します。
辞書をループする
ループするとキーが直接得られます。キーと値の両方を取得するには、items() を使用します。
user = {"name": "Asha", "age": 32}
for key, value in user.items():
print(key, "=", value)
# name = Asha
# age = 32
keys()、values()、items() はコピーではなくライブビューを返すため、後の変更が反映されます。 Python では RuntimeError が発生するため、辞書のループ中にキーを追加または削除しないでください。必要な場合は list(user) をループします。
ヒント: 辞書の in チェックは高速ですが、"Pune" in user.values() はすべての値をスキャンする必要があります。大きなデータに対してこれを頻繁に行うと、辞書に間違った方向にキーが入力される可能性があります。
辞書メソッドのチートシート
| 方法 | 何をするのか |
|---|---|
get(k, デフォルト) |
値を返すか、キーが欠落している場合はデフォルトを返します。 |
keys() |
キーのビューを返します |
values() |
値のビューを返します |
items() |
キーと値のペアのビューを返します。 |
update(other) |
別の辞書から追加または上書きします |
ポップ(k、デフォルト) |
キーを削除してその値を返します |
popitem() |
最後に追加されたペアを削除して返します |
setdefault(k, v) |
値を返し、キーが見つからない場合は最初に v を挿入します。 |
copy() |
浅いコピーを返します |
clear() |
すべてを削除します |
dict.fromkeys(keys, v) |
キーのリストから辞書を構築します |
辞書を結合する
一般的なニーズは、デフォルトに加えてユーザー設定を適用することです。キーが衝突すると、右側が勝ちます。
defaults = {"theme": "light", "lang": "en"}
saved = {"theme": "dark"}
defaults | saved
{**defaults, **saved}
# Both give: {'theme': 'dark', 'lang': 'en'}
| 演算子には Python 3.9 以降が必要ですが、** バージョンは古いバージョンでも動作します。どちらも新しい辞書を作成します。対照的に、defaults.update(saved)とdefaults |= savedはdefaultsをその場で変更します。
内訳と並べ替え
辞書内包表記は、リスト内包表記 がリストに対して行うのと同様に、読み取り可能な 1 行で新しい辞書を作成します。
prices = {"pen": 10, "book": 250, "bag": 900}
{k: v for k, v in prices.items() if v > 100}
# {'book': 250, 'bag': 900}
値で並べ替えるには、key 関数を sorted() に渡します。最大値を持つキーを見つけるには、max() を使用します。
sorted(prices.items(), key=lambda item: item[1], reverse=True)
# [('bag', 900), ('book', 250), ('pen', 10)]
max(prices, key=prices.get)
# 'bag'
辞書には sort() メソッドはなく、sorted() はペアのリストを返します。この順序で辞書が必要な場合は、結果を dict() で囲みます。
パターンのカウントとグループ化
2 つのタスクが常に発生します。 1 つ目はカウントです。これは、デフォルトのゼロで get() を使用して実行できます。
words = "to be or not to be".split()
counts = {}
for word in words:
counts[word] = counts.get(word, 0) + 1
print(counts)
# {'to': 2, 'be': 2, 'or': 1, 'not': 1}
標準ライブラリでは、Counter でこれをさらに短くしています。
from collections import Counter
Counter(words).most_common(2)
# [('to', 2), ('be', 2)]
2 番目はグループ化で、欠損値を作成するため、ここでは defaultdict が理想的です。
from collections import defaultdict
orders = [("Asha", 1200), ("Ben", 300), ("Asha", 800)]
by_customer = defaultdict(list)
for name, total in orders:
by_customer[name].append(total)
print(dict(by_customer))
# {'Asha': [1200, 800], 'Ben': [300]}
これがないと、追加する前に各キーが存在するかどうかを確認する必要があります。これらと同じパターンは、API データまたはログ行を集約する場合にうまく機能します。辞書が空であるかキーが欠落している場合、Python 例外処理に関するガイド では、結果として生じる KeyError の対処方法を示しています。
ネストされたデータとコピー トラップ
JSON はネストされた辞書とリストに直接マッピングされるため、キーをチェーンすることがよくあります。チェーン get() は、レベルが欠落している可能性がある場合にこれを安全に保ちます。
response = {"user": {"profile": {"city": "Pune"}}}
response["user"]["profile"]["city"] # 'Pune'
response.get("user", {}).get("settings", {}).get("theme") # None
ネストされたデータをコピーするときは注意してください。 copy() は最上位レベルのみを複製するため、内部辞書は元の辞書と共有されたままになります。
settings = {"db": {"host": "localhost"}}
shallow = settings.copy()
shallow["db"]["host"] = "prod"
print(settings["db"]["host"])
# prod
コピーを変更するとオリジナルも変更されるため、厄介なバグになる可能性があります。完全に独立したコピーを取得するには、copy.deepcopy(settings) を使用します。
辞書キーには何が考えられますか?
キーは ハッシュ可能 である必要があります。これは通常、不変を意味します。文字列、数値、不変値のタプルはすべて機能します。リストと辞書では次のことはできません。
{["a"]: 1}
# TypeError: unhashable type: 'list'
その理由は、キーのハッシュによって値が保存される場所が決定されるためです。キーが変更される可能性がある場合、Python はそのキーを見つけることができなくなります。複合キーが必要な場合は、{("Pune", 2026): 120} などのタプルを使用します。
よくある間違い
- オプションのキーに角かっこを使用します。キーが存在しない可能性がある場合は、
get()に手を伸ばします。 get()がキーが存在することを意味すると仮定します。Noneは、欠落しているか、保存されているNoneを意味する可能性があります。違いが重要な場合はinを使用してください。- 変更可能なデフォルトを使用します。
dict.fromkeys(names, [])すべてのキーにまったく同じリストが与えられます。代わりに内包表記を使用してください。 - 反復中にサイズを変更します。 キーのコピーをループします。
- 固定の既知のフィールドに辞書を使用する。
dataclassはより明確であり、フィールド名のタイプミスを検出します。
まとめ
辞書は少し練習すると報われます。オプションのキーには get()、ループには items()、最も一般的な 2 つのジョブには Counter と defaultdict を覚えておいてください。練習するには、小さな JSON ファイルを取得し、そのレコードをカウントしてグループ化するコードを作成します。この言語を初めて使用する場合は、初心者向けの Python チュートリアルから始めてください。
よくある質問
Python の辞書とは何ですか?
ディクショナリは、キーと値のペアを格納する組み込みのコレクションです。キーによって値を検索します。これは、大量のデータでも高速に実行できます。
Python 辞書は順序付けされていますか?
はい。 Python 3.7 以降、辞書はキーが挿入された順序を維持することが保証されています。既存のキーを更新しても、その位置は変わりません。
get() と角括弧の違いは何ですか?
キーが欠落している場合、角括弧は KeyError を発生させます。 get() は None または指定したデフォルトを返すため、オプションのキーに適しています。
辞書に重複キーを含めることはできますか?
いいえ。各キーは一意です。既存のキーに代入するとその値が置き換えられ、リテラルがキーを繰り返す場合は、最後の値が優先されます。
Python で 2 つの辞書をマージするにはどうすればよいですか?
| を使用します。 Python 3.9 以降では b、それより古いバージョンでは {**a, **b}。両方とも新しい辞書を構築し、キーが衝突した場合は b の値が優先されます。
学び続ける
テスト、WordPress、または SEO についてサポートが必要ですか?
私たちは、チームがより優れたソフトウェアを出荷し、サイトを成長させるのを支援します。あなたが取り組んでいることを教えてください。明確な次のステップを提案します。
詳しいガイドはこちら テスト、AI、最新の開発
この記事は気に入りましたか?トピックを選択して、最新のチュートリアルに直接アクセスしてください。
AI 幻覚の説明: 言語モデルが物事をでっち上げる理由とそれを軽減する方法
AI 幻覚について説明しました。幻覚とは何か、言語モデルが幻覚を生成する理由、一般的な種類、グラウンディングとプロンプトで幻覚を軽減する方法、そして私たちが実行した簡単なチェックです。
記事を読む →DevOps環境変数の説明: .env ファイル、シークレット、および設定が正しく行われている
実行した Python の例を使用して環境変数について説明します。環境変数の読み取りと設定、すべての値が文字列である理由、.env ファイル、プロセスの継承、シークレット、検証について説明します。
記事を読む →ソフトウェア開発API レート制限の説明: アルゴリズム、ヘッダー、および 429 エラーの処理
API レート制限については、実行したシミュレーションで説明します。トークン バケット、固定ウィンドウ、スライディング ウィンドウ、429 応答、レート制限ヘッダー、バックオフによる再試行、およびテスト制限です。
記事を読む →テスト自動化Python でのモッキング:unittest.mock、patch、およびテストを嘘にする間違い
Python でのunittest.mockによるモック、テスト済み: モックとreturn_value、side_effect、名前が使用されている場所のパッチ、仕様と自動仕様、日付のモック、およびよくある間違い。
記事を読む →ソフトウェアテストコードカバレッジの説明: 回線カバレッジとブランチカバレッジ、および 100% の実際の意味
実際のcoverage.pyの実行でコードカバレッジを説明: 行、分岐、条件のカバレッジ、レポートの読み取り、100%のカバレッジでもバグを見逃す可能性がある理由、および賢明なターゲット。
記事を読む →データベースとSQLSQL における DELETE、TRUNCATE、DROP: 違い、ロールバック、およびそれぞれをいつ使用するか
DELETE、TRUNCATE、DROP について、テスト済み SQL を使用して説明します。それぞれの削除内容、ロールバック、トリガー、ID リセット、速度、PostgreSQL、MySQL、SQL Server、SQLite の違いについて説明します。
記事を読む →データベースとSQLSQL ビューの説明: 作成、使用、落とし穴の回避、例を示します
SQL ビューについて、実行したクエリとともに説明しました。ビューの作成、ライブ結果、列の非表示、パフォーマンス、更新可能なビューと具体化されたビュー、壊れた依存関係、ベスト プラクティスについて説明します。
記事を読む →ソフトウェア開発TypeScript インターフェイスと型: 実際の違い、コンパイラでテスト
TypeScript インターフェイスと型、実際のコンパイラでチェック: 両方でできること、片方だけでできること、宣言のマージ、拡張と交差、および従うべき簡単なルール。
記事を読む →ソフトウェア開発Python *args と **kwargs の説明: 柔軟な関数と明確な例
Python の *args と **kwargs について、実行したコードで説明しました。パッキングとアンパッキング、パラメーターの順序、キーワードのみの引数と位置のみの引数、デコレーター、一般的なエラーです。
記事を読む →ソフトウェア開発Python Lambda 関数: 構文、実際の用途、および使用すべきでない場合
Python のラムダ関数について、実行したコードとともに説明します。構文、キーによるソート、マップとフィルター、クロージャー、遅延バインディング トラップ、通常の def がより適切な選択である場合。
記事を読む →人工知能AIエージェントとは何ですか?シンプルなエージェント ループを実行できる仕組み
AIエージェントとは何ですか?エージェント ループ、ツール、メモリ、ガードレール、実行した小さな Python ループ、実際のリスク、およびシンプルなチャットボットがより良い選択である場合についてのわかりやすいガイドです。
記事を読む →DevOpsモニタリングと可観測性: ログ、メトリクス、トレースによる本当の違い
モニタリングと可観測性について説明: 既知および未知の障害、ログ、メトリクスとトレース、チェックアウト インシデントのウォークスルー、ゴールデン シグナル、OpenTelemetry、および便利なアラート。
記事を読む →DevOpsDocker ボリュームとバインド マウント: コンテナ データを正しい方法で保持する
Docker ボリュームとバインド マウントについて説明します。コンテナ データが消える理由、名前付きボリューム、バインド マウント、tmpfs、Compose の例、バックアップ、アクセス許可、およびそれぞれをいつ使用するかについて説明します。
記事を読む →テスト自動化TDD と BDD: 主な違い、1 つの機能が両方の方法で構築され、それぞれをいつ使用するか
TDD と BDD は、両方の方法で構築された 1 つの割引機能で説明されています。実行したコードによるレッド-グリーン-リファクタリング、Given-When-Then シナリオ、ツール、トレードオフ、およびそれぞれをいつ使用するかです。
記事を読む →ソフトウェアテストユーザー受け入れテスト (UAT): プロセス、チェックリスト、および実際の例
ユーザー受け入れテストの説明: 誰が実行するか、QA との違い、7 段階のプロセス、UAT テスト ケース テンプレート、チェックリスト、サインオフ基準、およびよくある間違い。
記事を読む →データベースとSQLSQL NULL 値の説明: IS NULL、COALESCE、NULLIF、および回避すべきトラップ
SQL の NULL 値について、実行したクエリで説明しました。3 つの値のロジック、IS NULL、COALESCE、NULLIF、集計、結合、並べ替えでの NULL の扱い方、およびそれが密かに引き起こすバグです。
記事を読む →データベースとSQLSQL CASE WHEN ステートメント: 構文、実際の例、およびよくある間違い
SQL CASE WHEN では、単純な検索フォーム、条件順序、SUM を使用したピボット、COUNT トリック、カスタム並べ替え、更新、回避すべき NULL トラップなど、実行したクエリを使用して説明しました。
記事を読む →ソフトウェア開発JWTとは何ですか? JSON Web トークンを実際の例で説明する
JWTとは何ですか? JSON Web トークンについて説明しました。3 つの部分、実行したコード内で構築および改ざんされたトークン、JWT とセッション、ストレージ、リフレッシュ トークン、およびセキュリティ上の間違いです。
記事を読む →ソフトウェア開発JavaScript イベントループの説明: コールスタック、マイクロタスク、タイマーと例
JavaScript イベント ループについて、実行したコードで説明しました。コール スタック、タスク キュー、マイクロタスク キュー、setTimeout 0 が即時ではない理由、ブロッキング、スターベーション、およびインタビュー クイズです。
記事を読む →ソフトウェア開発Python ジェネレーターと収量の説明: 実際の例でメモリを節約する
Python ジェネレーターと Yield について、実行したコードを使用して説明します。一時停止と再開の方法、メモリ節約の測定、パイプライン、無限シーケンス、Yield from、send、および一般的なトラップについて説明します。
記事を読む →人工知能埋め込みとは何ですか?ベクトルとコサインの類似度を簡単に説明
埋め込みとは何ですか?ベクトル、コサイン類似度、セマンティック検索に関する平易なガイド。私たちが実行した小さな例、一般的な使用法、モデルの選択、既知の制限が含まれています。
記事を読む →DevOpsBlue-Green デプロイメントと Canary デプロイメント: 違い、トレードオフ、および選択方法
ブルー グリーン デプロイメントとカナリア デプロイメントについて説明: それぞれの仕組み、コスト、リスクとロールバック、テストした安定したユーザー バケット化、データベース移行、ローリング アップデート、および選択方法。
記事を読む →テスト自動化不安定なテスト: 問題の原因とそれを永久に修正する方法
不安定なテストについては、私たちが実行したデモを使用して説明しました。主な原因、確認および診断する方法、タイミングの適切な修正、共有された状態と日付、隔離プロセスなどです。
記事を読む →ソフトウェアテスト負荷テストとストレス テスト: 違い、メトリクス、および k6 の例
ロード テストとストレス テストについて説明します。それぞれが何を証明するか、スパイク テストとソーク テスト、重要な指標、平均値が誤解を招く理由、K6 の例、テストの計画方法について説明します。
記事を読む →ソフトウェアテストテスト ケースとテスト シナリオ: 主な違い、例、およびそれぞれをいつ使用するか
テスト ケースとテスト シナリオの説明: 明確な定義、並べて表、シナリオからケースへの 1 つのパスワード リセット機能、テンプレート、およびそれぞれをいつ使用するか。
記事を読む →データベースとSQLSQL クエリの最適化: 実行プランを読み取り、タイミングを考慮して遅いクエリを修正
SQL クエリの最適化は 100 万行でテストされています。実行プランの読み取り、適切なインデックスの追加、検索対象外のフィルターの修正、複合インデックスとキーセットのページネーションの使用。
記事を読む →データベースとSQLSQL UNION と UNION ALL: 違い、例、テストされたパフォーマンス
SQL UNION と UNION ALL について、実行したクエリで説明しました。重複、両方に従うルール、実際のデータのバグ、測定されたパフォーマンス、INTERSECT と EXCEPT、およびそれぞれをいつ使用するかについて説明します。
記事を読む →ソフトウェア開発JavaScript Fetch API チュートリアル: GET、POST、エラー処理、タイムアウト
ローカル サーバーに対してテストされた JavaScript Fetch API チュートリアル: GET と POST、404 がスローされない理由、再利用可能なヘルパー、クエリ文字列、タイムアウト、CORS、およびよくある間違い。
記事を読む →ソフトウェア開発Python ファイル処理: 読み取り、書き込み、CSV、JSON、パスライブラリと例
Python のファイル処理について、実行したコードで説明します。オープン モード、大きいファイルの読み取り、CSV、JSON、パスライブラリ、バイナリ ファイル、安全な書き込み、エラー処理、およびよくある間違いについて説明します。
記事を読む →ソフトウェア開発Python のクラスとオブジェクト: 実際の例を含む OOP チュートリアル
Python のクラスとオブジェクトについて、実行したコードとともに説明します: __init__、メソッド、クラスとインスタンスの属性、継承、プロパティ、ダンダー メソッド、データクラス、およびよくある間違い。
記事を読む →人工知能大規模言語モデルとは何ですか? LLM の仕組みを誇大広告なしで説明
大規模言語モデルとは何ですか? LLM は、トークン、エンベディング、アテンション、トレーニング、温度およびコンテキスト ウィンドウ、小さな次の単語のデモ、実際の制限など、平易な言葉で説明されています。
記事を読む →DevOps初心者のための Linux コマンド: 例を含む基本ターミナル ガイド
初心者向けの Linux コマンド。ナビゲーション、ファイル、ログの表示、grep、パイプ、権限、プロセス、アーカイブなどのタスク別にグループ化されており、実用的なログ分析の例も含まれています。
記事を読む →テスト自動化Selenium と Playwright: 主な違い、コードの比較、どちらを選択するか
Selenium と Playwright の比較: アーキテクチャ、待機、ブラウザと言語のサポート、デバッグ、両方のツールでの同じテスト、移行のアドバイスと選択方法。
記事を読む →ソフトウェアテスト等価性分割: テスト設計手法を実際の例で説明
等価性パーティション化について説明しました。有効なパーティションと無効なパーティションを見つける方法、年齢、パスワード、クーポンに関する実際の例、実行したテスト、境界と組み合わせる理由。
記事を読む →ソフトウェアテストソフトウェアテストにおける重大度と優先度: 相違点、マトリックス、および実際の例
ソフトウェア テストにおける重大度と優先度について説明します。明確な定義、例を含む 4 方向のマトリックス、レベル スケール、それぞれの設定者、バグ トリアージの実行方法。
記事を読む →データベースとSQLSQL サブクエリのチュートリアル: 型、相関サブクエリ、および EXISTS と例
実行したクエリを含む SQL サブクエリのチュートリアル: スカラー、IN、FROM、SELECT サブクエリ、相関サブクエリ、EXISTS、NOT IN NULL トラップ、サブクエリ対 JOIN 対 CTE。
記事を読む →データベースとSQLSQL トランザクションと ACID の説明: COMMIT、ROLLBACK、分離レベル
SQL トランザクションと ACID について、実行した銀行振込で説明しました。COMMIT、ROLLBACK、セーブポイント、ロック、分離レベル、ダーティ リード、デッドロック、ベスト プラクティスについて説明します。
記事を読む →ソフトウェア開発Git コマンドのチートシート: 実際に使用するコマンドと例
実際のデモ リポジトリからの出力を含む、タスク別にグループ化された Git コマンド チート シート (セットアップ、ステージング、ブランチ、リモート、スタッシュ、履歴、間違いの取り消し)。
記事を読む →ソフトウェア開発JavaScript Promise の説明: then、catch、Promise.all、およびよくある間違い
JavaScript の Promise を、実行したコードで説明します。ステート、then および catch チェーン、エラー処理、Promise.all、allSettled、race および any、イベント ループ、およびよくある間違いです。
記事を読む →ソフトウェア開発Python 辞書チュートリアル: メソッド、例、一般的なパターン
私たちが実行したコードを含む Python 辞書チュートリアル: 辞書の作成、読み取り、更新、主要なメソッド、マージ、内包表記、パターンのカウントとグループ化、およびよくある間違い。
記事を読む →人工知能RAGとは何ですか?検索拡張生成を実際の例で説明する
RAGとは何ですか?検索拡張生成について、インデックス作成、チャンク化、埋め込み、検索、実際に動作する小さな Python の例、評価、一般的な失敗など、ステップごとに説明します。
記事を読む →DevOps初心者向け Terraform チュートリアル: 最初のファイルからモジュールまでのコードとしてのインフラストラクチャ
初心者向けの Terraform チュートリアル: クラウド アカウントなしで開始し、初期化、計画、適用を学び、次に変数、出力、状態、モジュール、安全なチーム ワークフローを学びます。
記事を読む →DevOpsDocker と Kubernetes: 主な違い、連携方法、どちらが必要か
Docker と Kubernetes について説明しました。それぞれの機能、同じアプリを両方で実行すること、Docker Compose と Swarm の比較、dockershim の変更、必要なものを決定する方法などです。
記事を読む →テスト自動化初心者向けの Pytest チュートリアル: フィクスチャ、パラメータ化、実際の例
pytest 9.2 で実行したテストを含む初心者向けの pytest チュートリアル: アサーション、フィクスチャ、parametrize、conftest、マーカー、tmp_path、monkeypatch、便利なフラグ、CI。
記事を読む →ソフトウェアテストソフトウェア テスト ライフ サイクル (STLC): 6 つのフェーズ、開始基準と終了基準、例
ソフトウェア テストのライフ サイクルについては、開始基準と終了基準を含む 6 つの STLC フェーズ、成果物、実際に動作するログイン機能の例、STLC と SDLC、およびアジャイルにおける STLC について説明しました。
記事を読む →ソフトウェア開発Git mergeとrebaseの違い:例と使い分け
Git mergeとrebaseの違いを、実際のログ出力、比較表、rebaseの黄金律、安全なチームワークフローで解説します。
記事を読む →ソフトウェア開発Pythonのリスト内包表記:構文・例・使うべきでない場面
Pythonのリスト内包表記を解説:構文、フィルタ、if-else、ネストしたループ、実測した処理時間、そして通常のforループの方が良い場面。
記事を読む →データベースとSQLSQL JOINを例で解説(Inner・Left・Right・Full)
サンプルのテーブルとクエリでSQL JOINを順に解説。INNER、LEFT、RIGHT、FULL、CROSS、SELFに加え、よくある間違いとパフォーマンスのコツも紹介します。
記事を読む →