Я бы использовал itertools.product
.
for sex, age in itertools.product(dic['Sex'], dic['Age group']):
print(sex, age)
product
возвращает генератор кортежей, который вы можете делать с тем, что вам нравится.
Для произвольного dict
,где вы не обязательно знаете ключи или их порядок заранее, я бы сначала пометил каждое значение его ключом.
>>> for t in list(itertools.product(*[[(k, v) for v in dic[k] ] for k in dic])):
... print(t)
...
(('Age group', '15-25yrs'), ('Sex', 'Woman'))
(('Age group', '15-25yrs'), ('Sex', 'Man'))
(('Age group', '0-14yrs'), ('Sex', 'Woman'))
(('Age group', '0-14yrs'), ('Sex', 'Man'))
(('Age group', '26-35yrs'), ('Sex', 'Woman'))
(('Age group', '26-35yrs'), ('Sex', 'Man'))
Теперь вы, по крайней мере, знаете «тип» каждого значения в соответствующем кортеже;это не зависит от какого-либо конкретного порядка, включающего оригинал dict
.