List items verification for Integer type - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: List items verification for Integer type (/thread-23790.html) |
List items verification for Integer type - vintysaw - Jan-17-2020 Hi All, I want to verify if the list objects are integers are not. My code is failing at 0 index, when there is a float value or when there is a string value. Please help. num=0 z=['11, 12, 14', '20', '21, 23', '24', 'man', '1', '27', '28', '29.1', '30'] mydefectlist=[] mydefectlist1=[] mydefectlist2=[] while num < len(z): z[num] = int(z[num]) num +=1 for s in z: if (isinstance(s, int)): flag=0 mydefectlist.append(s) print('int values:',mydefectlist) elif(isinstance(s, float)): mydefectlist1.append(s) print('float values:',mydefectlist1) elif(isinstance(s, str)): mydefectlist2.append(s) print('string values:',mydefectlist2) else: print('please check the list again', s) RE: List items verification for Integer type - perfringo - Jan-17-2020 As far as I understand there is conversion to int, not verification. RE: List items verification for Integer type - sandeep_ganga - Jan-17-2020 Try this to see if that helps, list1=['man12','11', '12', '14', '20', '21', '23', '24', 'man', '1', '27', '28', '29.1', '30'] mydefectlist=[] mydefectlist1=[] mydefectlist2=[] for item in list1: try: if (isinstance(int(item), int)): mydefectlist.append(item) except ValueError: try: if (isinstance(float(item), float)): mydefectlist1.append(item) except ValueError: mydefectlist2.append(item) print("int-->", mydefectlist) print("float-->", mydefectlist1) print("str-->", mydefectlist2) Best Regards,Sandeep GANGA SANDEEP KUMAR RE: List items verification for Integer type - vintysaw - Jan-17-2020 Thanks Sandeep. This works for me. I guess, I was missing to use try-except. The ifelse logic wasn't working for me. RE: List items verification for Integer type - perfringo - Jan-17-2020 One way (which does not require to define possible classes in chain of if-s) is to use defaultdict and class name: >>> import collections >>> lst = ['abc', 1, 2, 3, 4.3, [42]] >>> types = collections.defaultdict(list) >>> for item in lst: ... types[type(item).__name__].append(item) ... >>> types defaultdict(list, {'str': ['abc'], 'int': [1, 2, 3], 'float': [4.3], 'list': [[42]]}) >>> for k, v in types.items(): ... print(f'{k} --> {v}') ... str --> ['abc'] int --> [1, 2, 3] float --> [4.3] list --> [[42]] >>> types['int'] [1, 2, 3] |