আমি একই সমস্যা নিয়ে কাজ করছিলাম। @ এস.লট বলেছেন, "আপনার যদি ভেরিয়েবলের তালিকা থাকে তবে তাদের নামগুলি" আবিষ্কার "করার কী দরকার?" এবং আমার উত্তরটি কেবল এটি করা যায় কিনা তা দেখার জন্য এবং যদি কোনও কারণে আপনি তালিকায় টাইপ করে আপনার ভেরিয়েবলগুলি বাছাই করতে চান। যাইহোক, আমার গবেষণায় আমি এই থ্রেডটি জুড়ে এসেছি এবং আমার সমাধানটি কিছুটা প্রসারিত এবং @rlotun সমাধানের উপর ভিত্তি করে। আরেকটি বিষয়, @ ইউনুটবু বলেছিলেন, "এই ধারণার যোগ্যতা রয়েছে, তবে মনে রাখবেন যে দুটি ভেরিয়েবলের নাম একই মান (যেমন সত্য) উল্লেখ করে তবে একটি অনিচ্ছাকৃত ভেরিয়েবলের নাম ফিরে আসতে পারে।" এই ব্যায়াম যে সত্য ছিল তাই আমি একটি তালিকা ধী প্রতিটি সম্ভাবনা এই অনুরূপ ব্যবহার করে এটি মোকাবেলা ইন: isClass = [i for i in isClass if i != 'item']
। এটি ছাড়া "আইটেম" প্রতিটি তালিকায় প্রদর্শিত হবে।
__metaclass__ = type
from types import *
class Class_1: pass
class Class_2: pass
list_1 = [1, 2, 3]
list_2 = ['dog', 'cat', 'bird']
tuple_1 = ('one', 'two', 'three')
tuple_2 = (1000, 2000, 3000)
dict_1 = {'one': 1, 'two': 2, 'three': 3}
dict_2 = {'dog': 'collie', 'cat': 'calico', 'bird': 'robin'}
x = 23
y = 29
pie = 3.14159
eee = 2.71828
house = 'single story'
cabin = 'cozy'
isClass = []; isList = []; isTuple = []; isDict = []; isInt = []; isFloat = []; isString = []; other = []
mixedDataTypes = [Class_1, list_1, tuple_1, dict_1, x, pie, house, Class_2, list_2, tuple_2, dict_2, y, eee, cabin]
print '\nMIXED_DATA_TYPES total count:', len(mixedDataTypes)
for item in mixedDataTypes:
try:
# if isinstance(item, ClassType): # use this for old class types (before 3.0)
if isinstance(item, type):
for k, v in list(locals().iteritems()):
if v is item:
mapping_as_str = k
isClass.append(mapping_as_str)
isClass = [i for i in isClass if i != 'item']
elif isinstance(item, ListType):
for k, v in list(locals().iteritems()):
if v is item:
mapping_as_str = k
isList.append(mapping_as_str)
isList = [i for i in isList if i != 'item']
elif isinstance(item, TupleType):
for k, v in list(locals().iteritems()):
if v is item:
mapping_as_str = k
isTuple.append(mapping_as_str)
isTuple = [i for i in isTuple if i != 'item']
elif isinstance(item, DictType):
for k, v in list(locals().iteritems()):
if v is item:
mapping_as_str = k
isDict.append(mapping_as_str)
isDict = [i for i in isDict if i != 'item']
elif isinstance(item, IntType):
for k, v in list(locals().iteritems()):
if v is item:
mapping_as_str = k
isInt.append(mapping_as_str)
isInt = [i for i in isInt if i != 'item']
elif isinstance(item, FloatType):
for k, v in list(locals().iteritems()):
if v is item:
mapping_as_str = k
isFloat.append(mapping_as_str)
isFloat = [i for i in isFloat if i != 'item']
elif isinstance(item, StringType):
for k, v in list(locals().iteritems()):
if v is item:
mapping_as_str = k
isString.append(mapping_as_str)
isString = [i for i in isString if i != 'item']
else:
for k, v in list(locals().iteritems()):
if v is item:
mapping_as_str = k
other.append(mapping_as_str)
other = [i for i in other if i != 'item']
except (TypeError, AttributeError), e:
print e
print '\n isClass:', len(isClass), isClass
print ' isList:', len(isList), isList
print ' isTuple:', len(isTuple), isTuple
print ' isDict:', len(isDict), isDict
print ' isInt:', len(isInt), isInt
print ' isFloat:', len(isFloat), isFloat
print 'isString:', len(isString), isString
print ' other:', len(other), other
# my output and the output I wanted
'''
MIXED_DATA_TYPES total count: 14
isClass: 2 ['Class_1', 'Class_2']
isList: 2 ['list_1', 'list_2']
isTuple: 2 ['tuple_1', 'tuple_2']
isDict: 2 ['dict_1', 'dict_2']
isInt: 2 ['x', 'y']
isFloat: 2 ['pie', 'eee']
isString: 2 ['house', 'cabin']
other: 0 []
'''