ฉันต้องการสร้างแบบสอบถามสำหรับ sunburnt (อินเตอร์เฟส solr) โดยใช้การสืบทอดคลาสดังนั้นจึงเพิ่มคู่คีย์ - ค่าเข้าด้วยกัน ส่วนต่อประสาน Sunburnt รับอาร์กิวเมนต์คำหลัก ฉันจะแปลง dict ({'type':'Event'})เป็นอาร์กิวเมนต์คำหลักได้(type='Event')อย่างไร
ฉันต้องการสร้างแบบสอบถามสำหรับ sunburnt (อินเตอร์เฟส solr) โดยใช้การสืบทอดคลาสดังนั้นจึงเพิ่มคู่คีย์ - ค่าเข้าด้วยกัน ส่วนต่อประสาน Sunburnt รับอาร์กิวเมนต์คำหลัก ฉันจะแปลง dict ({'type':'Event'})เป็นอาร์กิวเมนต์คำหลักได้(type='Event')อย่างไร
คำตอบ:
ใช้ตัวดำเนินการdouble-star (aka double-splat? ):
func(**{'type':'Event'})
เทียบเท่ากับ
func(type='Event')
** ผู้ประกอบการจะเป็นประโยชน์ที่นี่
**ผู้ประกอบการจะแกะองค์ประกอบ dict และจึง**{'type':'Event'}จะถือว่าเป็นtype='Event'
func(**{'type':'Event'})เป็นเช่นเดียวกับfunc(type='Event')คือองค์ประกอบ Dict keyword argumentsจะถูกแปลงเป็น
FYI
*positional argumentsจะแกะองค์ประกอบของรายการและพวกเขาจะได้รับการปฏิบัติตาม
func(*['one', 'two']) เป็นเช่นเดียวกับ func('one', 'two')
นี่คือตัวอย่างที่สมบูรณ์ที่แสดงวิธีใช้**โอเปอเรเตอร์เพื่อส่งค่าจากพจนานุกรมเป็นอาร์กิวเมนต์คำหลัก
>>> def f(x=2):
... print(x)
...
>>> new_x = {'x': 4}
>>> f() # default value x=2
2
>>> f(x=3) # explicit value x=3
3
>>> f(**new_x) # dictionary value x=4
4
func(**myDict). imyDict = {"type": "event"}