Pythonのdict内包表記でキー衝突が起きたらどうなるか

  • 後勝ち?
  • 不定
  • 重複した値はリストになる?

検証

# 1. 重複しないケース
print {i:i for i in range(10)}
#   => {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9}

# 2. 重複するケース。昇順
print {i+(10-i):i for i in range(10)}
#   => {10: 9}

# 3. 重複するケース。降順
print {i+(10-i):i for i in range(10,-1,-1)}
#   => {10: 0}

結論

後勝ちっぽい


/trunk/Python/compile.c の関数、 compiler_dictcomp あたりを読み込めば
分かりそう。