ধরা যাক আমার কাছে একটি অভিধান রয়েছে যাতে কীগুলি মানচিত্রের মানচিত্রের মতো করে:
d = {'key1': 1,'key2': 14,'key3': 47}
এই ক্ষেত্রে dinie এর মানগুলির যোগফলকে ফেরত দেওয়ার জন্য কি সিনট্যাক্টিক্যালি মাইনালিস্টিক উপায় আছে 62?
ধরা যাক আমার কাছে একটি অভিধান রয়েছে যাতে কীগুলি মানচিত্রের মানচিত্রের মতো করে:
d = {'key1': 1,'key2': 14,'key3': 47}
এই ক্ষেত্রে dinie এর মানগুলির যোগফলকে ফেরত দেওয়ার জন্য কি সিনট্যাক্টিক্যালি মাইনালিস্টিক উপায় আছে 62?
উত্তর:
যেমনটি আপনি প্রত্যাশা করতেন:
sum(d.values())
Python 2.7.12এছাড়াও ভাল কাজ করেsum(d.values())
d.values()।
পাইথন ২-তে আপনি itervalues()অভিধানের পদ্ধতিটি ব্যবহার করে সমস্ত মানগুলির অস্থায়ী অনুলিপি এড়াতে পারবেন , যা অভিধানের কীগুলির একটি পুনরাবৃত্তিকে ফিরিয়ে দেয়:
sum(d.itervalues())
পাইথন 3 এ আপনি কেবল ব্যবহার করতে পারেন d.values()কারণ সেই পদ্ধতিটি এটি করার জন্য পরিবর্তন করা itervalues()হয়েছিল (এবং এটির আর প্রয়োজনের পরে অপসারণ করা হয়েছিল)।
সংস্করণ স্বতন্ত্র কোড লিখতে আরও সহজ করার জন্য যা সর্বদা অভিধানের কীগুলির মানগুলির পুনরাবৃত্তি করে, একটি ইউটিলিটি ফাংশন সহায়ক হতে পারে:
import sys
def itervalues(d):
return iter(getattr(d, ('itervalues', 'values')[sys.version_info[0]>2])())
sum(itervalues(d))
এটি মূলত বেনজামিন পিটারসনের sixমডিউলটি করে।
d = {'key1': 1,'key2': 14,'key3': 47}
sum1 = sum(d[item] for item in d)
print(sum1)
আপনি এটি লুপ ব্যবহার করে করতে পারেন
আমি বোধ করি sum(d.values())এটি যোগফল পাওয়ার সবচেয়ে কার্যকর উপায় way
ল্যাম্বডা এক্সপ্রেশন সহ যোগফল গণনা করতে আপনি হ্রাস ফাংশনটিও দেখতে পারেন:
reduce(lambda x,y:x+y,d.values())
যোগফল (d.values ()) - "d" -> আপনার অভিধান পরিবর্তনশীল
ফিহাগের উত্তর (এবং অনুরূপগুলি) পাইথন 3 এ কাজ করবে না।
অজগর 3 এর জন্য:
d = {'key1': 1,'key2': 14,'key3': 47}
sum(list(d.values()))
হালনাগাদ! অভিযোগ আছে যে এটি কাজ করে না! আমি আমার টার্মিনাল থেকে কেবল একটি স্ক্রিনশট সংযুক্ত করি। সংস্করণ ইত্যাদিতে কিছু অমিল হতে পারে
আপনি এর জন্য 'লুপের জন্য' বিবেচনা করতে পারেন:
d = {'data': 100, 'data2': 200, 'data3': 500}
total = 0
for i in d.values():
total += i
মোট = 800
sum(d.values()), যেহেতু .values()রিটার্ন দেয় a List।
আপনি অভিধানে সমস্ত মানগুলির একটি জেনারেটর পেতে পারেন, তারপরে এটি একটি তালিকায় ফেলে দিন এবং সমস্ত মানের সমষ্টি পেতে যোগফল () ফাংশনটি ব্যবহার করতে পারেন।
উদাহরণ:
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) সহজেই সমাধান করতে পারে।