สมมติว่าฉันมีพจนานุกรมที่ปุ่มจับคู่กับจำนวนเต็มเช่น:
d = {'key1': 1,'key2': 14,'key3': 47}
มีวิธีการที่เรียบง่ายในการซินd
แทกติกเพื่อคืนค่าผลรวมของ- 62
ในกรณีนี้หรือไม่?
สมมติว่าฉันมีพจนานุกรมที่ปุ่มจับคู่กับจำนวนเต็มเช่น:
d = {'key1': 1,'key2': 14,'key3': 47}
มีวิธีการที่เรียบง่ายในการซินd
แทกติกเพื่อคืนค่าผลรวมของ- 62
ในกรณีนี้หรือไม่?
คำตอบ:
ตามที่คุณคาดหวัง:
sum(d.values())
Python 2.7.12
ยังทำงานได้ดีกับsum(d.values())
d.values()
ใช้ได้
ใน Python 2 คุณสามารถหลีกเลี่ยงการทำสำเนาค่าทั้งหมดชั่วคราวโดยใช้itervalues()
วิธีการพจนานุกรมซึ่งจะคืนค่าตัววนซ้ำของคีย์ของพจนานุกรม:
sum(d.itervalues())
ใน Python 3 คุณสามารถใช้เพียงd.values()
เพราะวิธีการนั้นเปลี่ยนไปเพื่อทำเช่นนั้น (และitervalues()
ถูกลบออกเพราะไม่ต้องการอีกต่อไป)
เพื่อให้ง่ายต่อการเขียนโค้ดอิสระของเวอร์ชันซึ่งวนซ้ำกว่าค่าของคีย์ของพจนานุกรมเสมอฟังก์ชั่นยูทิลิตี้จะมีประโยชน์:
import sys
def itervalues(d):
return iter(getattr(d, ('itervalues', 'values')[sys.version_info[0]>2])())
sum(itervalues(d))
นี่คือสิ่งที่six
โมดูลของ Benjamin Peterson ทำ
แน่นอนว่ามี นี่คือวิธีการรวมค่าของพจนานุกรม
>>> d = {'key1':1,'key2':14,'key3':47}
>>> sum(d.values())
62
d = {'key1': 1,'key2': 14,'key3': 47}
sum1 = sum(d[item] for item in d)
print(sum1)
คุณสามารถทำได้โดยใช้ for loop
ฉันรู้สึกว่าsum(d.values())
เป็นวิธีที่มีประสิทธิภาพที่สุดในการรับผลรวม
คุณสามารถลองใช้ฟังก์ชั่นการลดเพื่อคำนวณผลรวมพร้อมกับการแสดงออกแลมบ์ดา:
reduce(lambda x,y:x+y,d.values())
รวม (d.values ()) - "d" -> ตัวแปรพจนานุกรมของคุณ
คำตอบของ phihag (และคำที่คล้ายกัน) จะไม่ทำงานใน python3
สำหรับหลาม 3:
d = {'key1': 1,'key2': 14,'key3': 47}
sum(list(d.values()))
Update! มีคนบ่นว่ามันใช้งานไม่ได้! ฉันเพิ่งแนบภาพหน้าจอจากเทอร์มินัลของฉัน อาจไม่ตรงกันในบางรุ่นและอื่น ๆ
คุณสามารถพิจารณา 'for loop' สำหรับสิ่งนี้:
d = {'data': 100, 'data2': 200, 'data3': 500}
total = 0
for i in d.values():
total += i
รวม = 800
sum(d.values())
เนื่องจากผลตอบแทน.values()
List
คุณสามารถรับตัวสร้างค่าทั้งหมดในพจนานุกรมจากนั้นนำไปสร้างเป็นรายการและใช้ฟังก์ชัน sum () เพื่อรับผลรวมของค่าทั้งหมด
ตัวอย่าง:
c={"a":123,"b":4,"d":4,"c":-1001,"x":2002,"y":1001}
sum(list(c.values()))
sum
ตัวเองในแง่ของreduce
-reduce
เป็นรูปแบบทั่วไปมากขึ้น (เช่นsum
,min
และmax
ทุกคนสามารถเขียนได้ในแง่ของการreduce
) และสามารถแก้ปัญหาอื่น ๆ (เช่นproduct
) ได้อย่างง่ายดาย