الفهرسة الكلمة الحجج باستخدام سلسلة في بايثون

StackOverflow https://stackoverflow.com//questions/24056599

  •  26-12-2019
  •  | 
  •  

سؤال

أنا في حيرة مع بيان "طباعة(kw,":",كلمات[kw])" في البرنامج التالي في بيثون.

def cheeseshop(kind,*arguments,**keywords):
    print("--Do you have any",kind,"?")
    print("--I'm sorry, we're all out of",kind)
    for arg in arguments:
       print(arg)
    print("-"*40)
    print(keywords)
    keys=sorted(keywords)
    print(keys)
    for kw in keys:
        print(kw,":",keywords[kw])


cheeseshop("Limburger", "It's very runny, sir.",
           "It's really very, VERY runny, sir.",
           shopkeeper="Michael Palin",
           client="John Cleese",
           sketch="Cheese Shop Sketch")

والنتيجة هي أدناه:

--Do you have any Limburger ?
--I'm sorry, we're all out of Limburger
It's very runny, sir.
It's really very, VERY runny, sir.
----------------------------------------
{'client': 'John Cleese', 'sketch': 'Cheese Shop Sketch', 'shopkeeper': 'Michael Palin'}
['client', 'shopkeeper', 'sketch']
client : John Cleese
shopkeeper : Michael Palin
sketch : Cheese Shop Sketch

في فكرتي "kw" يجب أن يكون 'العميل', 'رسم' و 'متجر', لا أرقام ، ثم كيف يمكن أن "kw" أن مؤشر الكلمات الرئيسية في البيان "طباعة(kw,":",كلمات[kw])"?

للتحقق من فكرتي أنا أيضا جربت برنامج آخر:

letters=['a','b']
for kw in letters:
   print(letters[kw])

معقول الرد للملوثات العضوية الثابتة:

Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
TypeError: list indices must be integers, not str

وعلاوة على ذلك يخلط لي عن مشكلة حصلت في الجزء الأول من البرنامج.أعتقد أنه يجب أن يطفو على السطح نفس الخطأ لي.

هل كانت مفيدة؟

المحلول

وظيفة الحجج سبق مع ** تسمى "الكلمة الحجج" الذي أخذ اسمه المعلمات عند استدعاء الدالة, على سبيل المثال: client="John Cleese" في المثال الخاص بك.في هذه الحالة, "العميل" هو اسم "جون كليز" هو القيمة.الوسيطات التي تم تمريرها بهذه الطريقة يتم وضعها في dict, الذي هو تخزين قيمة المفتاح بدلا من القائمة التي كنت قد يكون على دراية في شكل

x = {
      "foo": "bar"
    } 
print x["foo"] # prints "bar"

نصائح أخرى

استخدام الكلمات الرئيسية والمرافق ، إنه نوع من مجموعة مع اسم المفتاح.

يمكنك أن ترى lib الوصف في وثائق بايثون هنا

في الواقع هناك خصائص خاصة من **كلمات الحجج التي تنص على الحق في القيام بذلك.

هنا هو البرنامج التعليمي استخدامها (كما أفهم) ، هنا هو ستاكوفيرفلوو ذات السؤال.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top