ฉันต้องการสร้างแบบสอบถามสำหรับ 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"}