any suggestion on this code
Hello Team, I have a sample code that runs through the list of dictionary and return a dictionary if the search value matched *Sample Program:* #!/usr/bin/python def return_matched_owner(dict_list,search_block): """Accepts a list of dictionary with owners and returns a dict if there is a match""" try: x = next(item for item in dict_list if item.get("Block") == search_block) except StopIteration: return False return x def main(): dict_list = [{'real_owner': '1:0070', 'fake_owner': '121212aaa', 'Block': '121212121'}, {'real_owner': '1:0170', 'fake_owner': 'aaa', 'Block': '21115674'}, {'real_owner': '1:0120', 'fake_owner': 'ab', 'Block': '31115674'}] x = return_matched_owner(dict_list,'31115674') print x if not x: assert False, "Error while getting owner" print "\n Matching owner found \n" if __name__ == '__main__': main() *Sample o/p:* yy-1# python stack1.py {'real_owner': '1:0120', 'fake_owner': 'ab', 'Block': '31115674'} Matching owner found Couple of question here : 1. Any better suggestion to optimize the code and any other observations around use of assert, generators and are exception handled correctly in return_matched_owner() Regards, Ganesh -- https://mail.python.org/mailman/listinfo/python-list
Re: any suggestion on this code
On 2017-04-23 09:21, Ganesh Pal wrote: Hello Team, I have a sample code that runs through the list of dictionary and return a dictionary if the search value matched *Sample Program:* #!/usr/bin/python def return_matched_owner(dict_list,search_block): """Accepts a list of dictionary with owners and returns a dict if there is a match""" try: x = next(item for item in dict_list if item.get("Block") == search_block) except StopIteration: return False return x def main(): dict_list = [{'real_owner': '1:0070', 'fake_owner': '121212aaa', 'Block': '121212121'}, {'real_owner': '1:0170', 'fake_owner': 'aaa', 'Block': '21115674'}, {'real_owner': '1:0120', 'fake_owner': 'ab', 'Block': '31115674'}] x = return_matched_owner(dict_list,'31115674') print x if not x: assert False, "Error while getting owner" print "\n Matching owner found \n" if __name__ == '__main__': main() *Sample o/p:* yy-1# python stack1.py {'real_owner': '1:0120', 'fake_owner': 'ab', 'Block': '31115674'} Matching owner found Couple of question here : 1. Any better suggestion to optimize the code and any other observations around use of assert, generators and are exception handled correctly in return_matched_owner() If it's going to return a dict or something else, it's more usual for that "something else" to be None. I think that the function is needlessly complicated and that this is better: def return_matched_owner(dict_list,search_block): """Accepts a list of dictionary with owners and returns a dict if there is a match""" for item in dict_list: if item.get("Block") == search_block: return item return None -- https://mail.python.org/mailman/listinfo/python-list
Re: any suggestion on this code
On Sun, 23 Apr 2017 06:21 pm, Ganesh Pal wrote: > 1. Any better suggestion to optimize the code and any other > observations around use of assert, generators and are exception handled > correctly in return_matched_owner() When to use assert: http://import-that.dreamwidth.org/676.html -- Steve “Cheer up,” they said, “things could be worse.” So I cheered up, and sure enough, things got worse. -- https://mail.python.org/mailman/listinfo/python-list