any suggestion on this code

2017-04-23 Thread Ganesh Pal
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

2017-04-23 Thread MRAB

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

2017-04-23 Thread Steve D'Aprano
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