1

I have a python program, which gets a value from an XML file and match it with the given code, but I don't know how to print the value with some conditions.

My Python program is:

class setMap(getXml):

    def __init__(self, event_log_row):
        self.event_log_row = event_log_row

    def code(self):
        for each in self.event_log_row:
            self.get_map(each)
        # if I use return here, it basically returns only one value, which is understandable.            

    def get_map(self, event_code):
        dict_class = getXml() # Getting XML from another class
        dictionary = dict_class.getdescription()
        for keys, values in dictionary.items():
            if keys == event_code:
                return values  

# I'm not allowed to use for loop or any conditions after this 
code = ['1011', '1015', '1013']
obj = setMap(code)
print(obj.code())

Is it possible to achieve what I am intend to achieve, can someone give me some suggestions, plz.

Thanks

U13-Forward
  • 69,221
  • 14
  • 89
  • 114
Santha Kumar
  • 83
  • 1
  • 12

2 Answers2

3

You can use a list comprehension:

    def code(self):
        return [self.get_map(each) for each in self.event_log_row]

[print(x) for x in obj.code()]
jspcal
  • 50,847
  • 7
  • 72
  • 76
0

If you get a result of

result  = [["One","Two"],["Three"], ["Four","Five","Six"]]        # obj.code() result

from your setMap.code() you can print this using

result  = [["One","Two"],["Three"], ["Four","Five","Six"]]

print(*result, sep ="\n") # unpack outer list for printing 

print( *(b for a in result for b in a), sep ="\n") # flatten inner lists, unpack

resulting in

['One', 'Two']
['Three']
['Four', 'Five', 'Six']

One
Two
Three
Four
Five
Six

You specify a print-seperator of newline to get them into different lines, no string-join neeeded.

Details on sep: What does print(... sep='', '\t' ) mean? or Doku print()

Patrick Artner
  • 50,409
  • 9
  • 43
  • 69