ในหลาย ๆ กรณีนี่อาจเป็นปัญหา XYปัญหาเหตุใดคุณจึงจัดทำดัชนีคีย์พจนานุกรมตามตำแหน่ง คุณต้องการจริงๆหรือ? จนกระทั่งเมื่อไม่นานมานี้พจนานุกรมยังไม่ได้รับคำสั่งใน Python ดังนั้นการเข้าถึงองค์ประกอบแรกจึงเป็นไปโดยพลการ
ฉันเพิ่งแปลโค้ด Python 2 เป็น Python 3:
keys = d.keys()
for (i, res) in enumerate(some_list):
k = keys[i]
# ...
ซึ่งไม่สวย แต่ก็ไม่แย่มากเช่นกัน ตอนแรกฉันกำลังจะแทนที่มันด้วยมหึมา
k = next(itertools.islice(iter(keys), i, None))
ก่อนที่ฉันจะรู้ว่าทั้งหมดนี้ดีกว่ามากที่เขียนเป็น
for (k, res) in zip(d.keys(), some_list):
ซึ่งใช้งานได้ดี
ฉันเชื่อว่าในกรณีอื่น ๆ สามารถหลีกเลี่ยงการจัดทำดัชนีคีย์พจนานุกรมตามตำแหน่งได้ แม้ว่าพจนานุกรมจะเรียงลำดับใน Python 3.7 แต่ก็ไม่ค่อยสวยนัก รหัสด้านบนใช้งานได้เนื่องจากเนื้อหาที่some_list
เพิ่งผลิตจากเนื้อหาของd
.
ตรวจสอบรหัสของคุณอย่างละเอียดหากคุณต้องการเข้าถึงdisk_keys
องค์ประกอบด้วยดัชนีจริงๆ บางทีคุณอาจไม่จำเป็นต้องทำ
dict.keys()
ส่งคืนชุดเช่น view object ไม่ใช่ list (ดังนั้นจึงไม่สามารถสร้างดัชนีได้) ใช้keys = list(test)