Python> = 3.5 ทางเลือก: แกะลงในรายการตามตัวอักษร [*newdict]
มีการเปิดตัวการสรุปทั่วไปใหม่(PEP 448)ด้วย Python 3.5 ที่ให้คุณทำสิ่งต่อไปนี้ได้อย่างง่ายดาย:
>>> newdict = {1:0, 2:0, 3:0}
>>> [*newdict]
[1, 2, 3]
การคลายการ*ทำงานกับวัตถุใด ๆที่ทำซ้ำได้และเนื่องจากพจนานุกรมส่งคืนคีย์ของพวกเขาเมื่อทำซ้ำคุณจึงสามารถสร้างรายการได้อย่างง่ายดายโดยใช้ภายในรายการตามตัวอักษร
การเพิ่ม.keys()ie [*newdict.keys()]อาจช่วยในการทำให้เจตนาของคุณชัดเจนขึ้นแม้ว่าจะทำให้คุณต้องเสียค่าใช้จ่ายในการค้นหาและเรียกใช้ฟังก์ชัน (ซึ่งในความซื่อสัตย์สุจริตทั้งหมดคือสิ่งที่คุณไม่ควรจริงๆจะกังวลเกี่ยวกับ)
*iterableไวยากรณ์จะคล้ายกับการทำlist(iterable)และพฤติกรรมของมันถูกบันทึกครั้งแรกในส่วนการโทรของคู่มือหลามอ้างอิง ด้วย PEP 448 ข้อ จำกัด เกี่ยวกับตำแหน่งที่*iterableสามารถปรากฏได้ถูกปล่อยให้วางไว้ในรายการตั้งค่าและ tuple ตัวอักษรคู่มืออ้างอิงในรายการ Expressionได้รับการอัปเดตเพื่อระบุสิ่งนี้
แม้ว่าเทียบเท่าlist(newdict)กับความแตกต่างที่เร็วขึ้น (อย่างน้อยสำหรับพจนานุกรมขนาดเล็ก) เพราะไม่มีการเรียกใช้ฟังก์ชัน:
%timeit [*newdict]
1000000 loops, best of 3: 249 ns per loop
%timeit list(newdict)
1000000 loops, best of 3: 508 ns per loop
%timeit [k for k in newdict]
1000000 loops, best of 3: 574 ns per loop
ด้วยพจนานุกรมที่มีขนาดใหญ่กว่าความเร็วก็ค่อนข้างจะเหมือนกัน (ค่าใช้จ่ายในการวนซ้ำผ่านคอลเลกชันขนาดใหญ่ทำให้ค่าใช้จ่ายการโทรฟังก์ชั่นใหญ่)
ในทำนองเดียวกันคุณสามารถสร้างสิ่งอันดับและชุดของพจนานุกรมคีย์:
>>> *newdict,
(1, 2, 3)
>>> {*newdict}
{1, 2, 3}
ระวังเครื่องหมายจุลภาคต่อท้ายในกรณี tuple!