পাইথনে টাইপ == তালিকা কিনা তা পরীক্ষা করা হচ্ছে


185

আমার এখানে মস্তিষ্কের উচ্ছ্বাস হতে পারে তবে আমার কোডটিতে কী কী আছে তা আমি সত্যিই বুঝতে পারি না:

for key in tmpDict:
    print type(tmpDict[key])
    time.sleep(1)
    if(type(tmpDict[key])==list):
        print 'this is never visible'
        break

আউটপুট <type 'list'>কিন্তু if স্টেটমেন্টটি কখনই ট্রিগার করে না। কেউ কি এখানে আমার ত্রুটি চিহ্নিত করতে পারে?


3
আপনি listকোথাও ভেরিয়েবল হিসাবে ব্যবহার করেছেন? সাবধানতা অবলম্বন করুন যে আপনি যদি আরপিএল বা এ জাতীয় তে কাজ করছেন তবে এটি কিছুক্ষণ আগে থেকেই পুনরায় সংজ্ঞায়িত হতে পারে।
Ffisegydd

..... Wooooowww ... অবশ্যই নরমভাবে টাইপ করা ভাষার ত্রুটিগুলি সম্পর্কিত একটি পাঠ। বাহ ...
বেঞ্জামিন লিন্ডকভিস্ট

এটি উত্তর হিসাবে যুক্ত করুন এবং আমি গ্রহণ করব। ধন্যবাদ।
বেঞ্জামিন লিন্ডকভিস্ট

1
পাইলট এবং বন্ধুরা আপনাকে ভবিষ্যতে সাহায্য করবে (আমি এটাকে আসলেই একটি ঘাটতি বলব না)।

উত্তর:


139

আপনার সমস্যাটি হ'ল listআপনি আপনার কোডে পূর্বে ভেরিয়েবল হিসাবে পুনরায় সংজ্ঞায়িত হয়েছেন। এর অর্থ হ'ল আপনি যখন করবেন তখন type(tmpDict[key])==listফিরে আসবেন Falseকারণ তারা সমান নয়।

বলা হচ্ছে, isinstance(tmpDict[key], list)কোনও কিছুর ধরণের পরীক্ষা করার সময় আপনার পরিবর্তে ব্যবহার করা উচিত , এটি ওভাররাইটিংয়ের সমস্যা এড়াতে পারে না listতবে ধরণের পরীক্ষার আরও একটি পাইথোনিক উপায়।


খুশী হলাম। 'মোর পাইথোনিক' একটি বিস্তৃত ধারণা। শুধু শিক্ষার খাতিরে: কী ধরণের-এবং-বিভেদ-মধ্যে-পার্থক্যগুলি?
জাভি

221

আপনার ব্যবহার করার চেষ্টা করা উচিত isinstance()

if isinstance(object, list):
       ## DO what you want

তোমার ক্ষেত্রে

if isinstance(tmpDict[key], list):
      ## DO SOMETHING

সম্প্রসারিত:

x = [1,2,3]
if type(x) == list():
    print "This wont work"
if type(x) == list:                  ## one of the way to see if it's list
    print "this will work"           
if type(x) == type(list()):
    print "lets see if this works"
if isinstance(x, list):              ## most preferred way to check if it's list
    print "This should work just fine"

সম্পাদনা 1: মধ্যে পার্থক্য isinstance()এবং type()এবং কেন isinstance()যাচাই করুন সবচেয়ে পছন্দের উপায় যে হল isinstance(), উপরন্তু চেক উপশ্রেণী যখন type()না।


22

এটি আমার পক্ষে কাজ করে বলে মনে হচ্ছে:

>>>a = ['x', 'y', 'z']
>>>type(a)
<class 'list'>
>>>isinstance(a, list)
True
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.