मुझे एक ऐसा फ़ंक्शन चाहिए जो आम तौर पर टाइप एक्स के तर्क में होता है जहां एक्स या तो स्केलर, एक सूची या एक टोक होता है, और अन्य जानकारी के आधार पर एक्स की एक ही कुंजी मानों की एक सूची देता है।पाइथन में स्केलर, सूची और निर्देश तर्कों के बीच अंतर करने का सबसे अच्छा तरीका?
def foo(info, k):
return [bar(item,k) for item in processInfo(info)]
def bar(item, keydata):
# pseudocode follows.
# What we want to do is return an output of parallel type to the input key k,
# using the key data to lookup information from the input item.
if keydata is a scalar:
return item[keydata]
elif keydata is a list:
return [item[k] for k in keydata]
elif keydata is a dict:
return dict((k,item[v]) for (k,v) in keydata.iteritems())
else:
raise ValueError('bar expects a scalar, list, or dict')
मेरा सवाल है, मैं तीन प्रकार के बीच कैसे प्रेषित कर सकता हूं?
संपादित करें: एक स्ट्रिंग को स्केलर के रूप में व्याख्या किया जाना चाहिए, सूची/पुनरावर्तनीय नहीं। ट्यूपल्स को पुनरावृत्त के रूप में व्याख्या किया जाना है।
संपादित 2: मुझे बतख टाइपिंग चाहिए, सख्त टाइपिंग नहीं।
क्या होगा अगर कोई वस्तु किसी सूची और एक निर्देश के व्यवहार को प्रदर्शित कर सके? – Meitham
तब ताना-जैसे वस्तुओं के लिए व्यवहार को पुन: प्रयोज्य वस्तुओं के लिए व्यवहार पर प्राथमिकता दी जाती है –
इस प्रश्न को नामकरण की आवश्यकता है, क्योंकि यह शीर्षक और सूची के बीच अंतर निर्धारित करने के लिए सबसे अच्छा है, न कि स्केलर और नॉनस्कालर के बीच, शीर्षक का तात्पर्य है। मैं खोजों में इसे छोड़कर रखता हूं। – SystemParadox