পাইথনের তালিকার সাথে অভিধানের মূল মানগুলিকে ওভাররেট করা


132

পাইথনে কাজ করা ২. Working। কী হিসাবে দলটির নাম এবং রান সংগ্রহের পরিমাণ এবং প্রতিটি দলের জন্য মূল্য তালিকা হিসাবে অনুমোদিত হিসাবে আমার কাছে একটি অভিধান রয়েছে:

NL_East = {'Phillies': [645, 469], 'Braves': [599, 548], 'Mets': [653, 672]}

আমি অভিধানটি কোনও ফাংশনে ফিড করতে এবং প্রতিটি টিমের (কীগুলি) পুনরাবৃত্তি করতে সক্ষম হতে চাই।

আমি যে কোডটি ব্যবহার করছি তা এখানে। এখনই, আমি কেবল দলে দলে যেতে পারি। আমি কীভাবে প্রতিটি দলে পুনরুক্তি করব এবং প্রতিটি দলের জন্য প্রত্যাশিত উইন_পেনসেন্টেজ মুদ্রণ করব?

def Pythag(league):
    runs_scored = float(league['Phillies'][0])
    runs_allowed = float(league['Phillies'][1])
    win_percentage = round((runs_scored**2)/((runs_scored**2)+(runs_allowed**2))*1000)
    print win_percentage

কোন সাহায্যের জন্য ধন্যবাদ।

উত্তর:


221

আপনার অভিধানে পুনরাবৃত্তি করার জন্য বিভিন্ন বিকল্প রয়েছে।

আপনি যদি অভিধানটিতে নিজেই পুনরুক্ত হন ( for team in league), আপনি অভিধানের কীগুলি দিয়ে পুনরাবৃত্তি করবেন। লুপের জন্য লুপ করার সময়, আপনি ডিক ( league) নিজেই লুপ করেন বা league.keys():

for team in league.keys():
    runs_scored, runs_allowed = map(float, league[team])

আপনি পুনরুক্তি করে একবারে কী এবং মান উভয়টিতে পুনরাবৃত্তি করতে পারেন league.items():

for team, runs in league.items():
    runs_scored, runs_allowed = map(float, runs)

এমনকি পুনরাবৃত্তির সময় আপনি নিজের টুপল আনপ্যাকিংও সম্পাদন করতে পারেন:

for team, (runs_scored, runs_allowed) in league.items():
    runs_scored = float(runs_scored)
    runs_allowed = float(runs_allowed)

43
পাইকন 3 এর পরে ডিক্টিমিটারাইটস () সরানো হয়েছে। পরিবর্তে আপনার ডিক্টিমাইটস () ব্যবহার করা উচিত
সের্গেই

14
পাইকন 3-এ ডিক্টিমটারকিজ () কেও সরানো হয়েছে instead পরিবর্তে আপনার ডিক.কিজ () ব্যবহার করা উচিত
নার্ভ

1
পাইথন 3-এ ডিক্টর.আইটর্য়ালিউস () কেও সরানো হয়েছে instead পরিবর্তে আপনার ডিক্টভ্যালিউস () ব্যবহার করা উচিত
জাচারি রায়ান স্মিথ

11

আপনি খুব সহজে অভিধানেও পুনরাবৃত্তি করতে পারেন:

for team, scores in NL_East.iteritems():
    runs_scored = float(scores[0])
    runs_allowed = float(scores[1])
    win_percentage = round((runs_scored**2)/((runs_scored**2)+(runs_allowed**2))*1000)
    print '%s: %.1f%%' % (team, win_percentage)

@ বার্টনগাস্টার: আপনি যখনই কোনও উত্তরকে যোগ্য মনে করেন, দয়া করে আপলোড করুন (পোস্টের বাম দিকে "আপ" বোতামটি ক্লিক করুন)! এইভাবে আপনি সম্প্রদায়কেও সহায়তা করছেন!
স্ট্যাক এক্সচেঞ্জের স্যাডেন্সগুলি

6

অভিধানের একটি বিল্ট ইন ফাংশন বলা হয় iterkeys()

চেষ্টা করুন:

for team in league.iterkeys():
    runs_scored = float(league[team][0])
    runs_allowed = float(league[team][1])
    win_percentage = round((runs_scored**2)/((runs_scored**2)+(runs_allowed**2))*1000)
    print win_percentage

5

অভিধানের বিষয়গুলি আপনাকে তাদের আইটেমগুলি নিয়ে পুনরাবৃত্তি করতে দেয়। এছাড়াও, প্যাটার্ন মেলানো এবং আপনার কাছ থেকে বিভাজনের সাথে __future__জিনিসগুলি কিছুটা সহজ করা যায়।

অবশেষে, জিনিসগুলি পরে রিফ্যাক্টর / ডিবাগ করার জন্য কিছুটা সহজ করতে আপনার প্রিন্টিং থেকে আপনার যুক্তি আলাদা করতে পারেন।

from __future__ import division

def Pythag(league):
    def win_percentages():
        for team, (runs_scored, runs_allowed) in league.iteritems():
            win_percentage = round((runs_scored**2) / ((runs_scored**2)+(runs_allowed**2))*1000)
            yield win_percentage

    for win_percentage in win_percentages():
        print win_percentage

4

তালিকা বোধগম্য জিনিসগুলি হ্রাস করতে পারে ...

win_percentages = [m**2.0 / (m**2.0 + n**2.0) * 100 for m, n in [a[i] for i in NL_East]]
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.