Hi all,
I am trying to do a 'skimming' or reduction method in dictionaries in which
it will returns me a set of results from a given set of condition.
However my current method is more of an additive where it will simply lists
me any items that fulfills any one of the condition.
Currently while it seems to be not working if there is only one key and one
list item..
# Give me items that are menuA/a100 + menuB/b100, or menuA/a100 + menuB/b200
conditions = {'menuA':['a200']}
my_items = [
{'item01' : {'menuA': ['a100'], 'menuB': ['b200']}},
{'item02' : {'menuA': ['a200'], 'menuB': ['b200'], 'menuC' : ['c100']}},
{'item03' : {'menuA': ['a100'], 'menuB': ['b200']}},
{'item04' : {'menuA': ['a100', 'a200']}},
{'item05' : {'menuB': ['b100'], 'menuC': ['c100']}}
]
result = []
for m in my_items:
for mk, mv in m.items():
all_conditions_met = len(conditions) == len(mv) #False
for condition in conditions:
if condition in mv:
all_conditions_met &= bool((set(mv[condition]) &
set(conditions[condition])))
###############
# Tried the following but it will fail if given condition
# eg. conditions = {'menuA': ['a100', 'a200'], 'menuB':
['b200']}
# where it should return me ['item01', 'item03'] but it gives
me [] instead...
# all_conditions_met &= bool((set(mv[condition]) &
set(conditions[condition]))) & (len(mv[condition]) ==
len(conditions[condition]))
###############
else:
all_conditions_met = False
break
if all_conditions_met:
result.append(mk)
print result # 'item04'
In my above example, given the condition {'menuA':['a200']}, it should not
be returning me any results as there are no items that consists only of
{'menuA':['a200']} but yet it return me an item - closest to the given
condition…
The idea behind this is to simply returns me items based on the conditions.
Could someone kindly share some insights on this matter?
--
You received this message because you are subscribed to the Google Groups
"Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/python_inside_maya/3eac4a92-ce87-4264-ad5a-e919aeef59a7%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.