I executed your suggestion below (removed if match). Then I got this error:
print([index for index, value in enumerate(v) if match in value])
TypeError: 'in <string>' requires string as left operand, not list
Now I converted both values 'v' and interface 'match' variables to string.
Now the result I see is the below. I am getting no matches at this point. In my case the output of 'interfaces' and 'CPU' is coming from an appliance. I am printing the original value for you to see it. So if I try the 'index', I get the error above complaining it requires a string. But then if I convert it to string, the operations with 'index' may no longer be valid, correct?
print (f'Original data from appliance, dictionary:{arch_dic}')
for k, v in arch_dic.items():
v = str(v)
match = str(match)
print(f'type of values v {type(v)} {v} and type of interface:{type(match)} {match} ')
print([index for index, value in enumerate(v) if match in value])
#I am not getting a match:
Original data from appliance, dictionary:defaultdict(<class 'list'>, {'PSE2': ['0/7/CPU0', '1/0/CPU0', '1/2/CPU0']})
type of values v <class 'str'> ['0/7/CPU0', '1/0/CPU0', '1/2/CPU0'] and type of interface:<class 'str'> ['0/5']
[]
Original data from appliance, dictionary:defaultdict(<class 'list'>, {'PSE2': ['0/7/CPU0', '1/0/CPU0', '1/2/CPU0']})
type of values v <class 'str'> ['0/7/CPU0', '1/0/CPU0', '1/2/CPU0'] and type of interface:<class 'str'> ['0/7']
[]
exit...
(Apr-07-2019, 09:59 PM)Yoriz Wrote: [ -> ]from collections import defaultdict
arch_dic = {}
arch_dic = defaultdict(list)
arch_dic['PSE2'].append("0/7/CPU0")
arch_dic['PSE2'].append("1/7/CPU0")
arch_dic['PSE2'].append("0/7/CPU0")
arch_dic['PSE2'].append("0/7/CPU0")
arch_dic['PSE2'].append("1/7/CPU0")
match='0/7'
for k, v in arch_dic.items():
print (f'Interface:{match} CPU list:{v}')
print([index for index, value in enumerate(v) if match in value])
Output:
Interface:0/7 CPU list:['0/7/CPU0', '1/7/CPU0', '0/7/CPU0', '0/7/CPU0', '1/7/CPU0']
[0, 2, 3]
if match in v
will only match if the whole string matches, the above will find any index with the partial sting in.