ในการตอบคำถาม " ฉันจะทราบได้อย่างไรว่าดัชนีที่กำหนดใน dict นั้นถูกตั้งค่าเป็นค่าที่ไม่ใช่ None " หรือไม่ฉันต้องการสิ่งนี้:
try:
nonNone = my_dict[key] is not None
except KeyError:
nonNone = False
สิ่งนี้สอดคล้องกับแนวคิดที่ถูกเรียกใช้ของ EAFP (ง่ายต่อการขอการให้อภัยและได้รับอนุญาต) นอกจากนี้ยังหลีกเลี่ยงการค้นหาคีย์ที่ซ้ำกันในพจนานุกรมเช่นเดียวกับในkey in my_dict and my_dict[key] is not None
สิ่งที่น่าสนใจหากการค้นหามีราคาแพง
สำหรับปัญหาจริงที่คุณโพสต์ไว้นั่นคือการเพิ่ม int ถ้ามีอยู่หรือตั้งค่าเป็นค่าเริ่มต้นมิฉะนั้นฉันขอแนะนำ
my_dict[key] = my_dict.get(key, default) + 1
ดังคำตอบของ Andrew Wilkinson
มีวิธีที่สามถ้าคุณเก็บวัตถุที่แก้ไขได้ในพจนานุกรมของคุณ ตัวอย่างทั่วไปสำหรับสิ่งนี้คือmultimapที่คุณเก็บรายการองค์ประกอบสำหรับคีย์ของคุณ ในกรณีนั้นคุณสามารถใช้:
my_dict.setdefault(key, []).append(item)
หากไม่มีค่าสำหรับคีย์ในพจนานุกรมเมธอด setdefault จะตั้งเป็นพารามิเตอร์ตัวที่สองของ setdefault มันจะทำงานเหมือน my_dict มาตรฐาน [กุญแจ] คืนค่าสำหรับคีย์ (ซึ่งอาจเป็นค่าที่ตั้งใหม่)