拿这个字典的字典:
case_forms = {'plural': {'nominative': 'dni', 'locative': 'dniach'},
'singular': {'instrumental': 'dniem', 'vocative': 'dzie\xc5\x84'}}
我想获得可用作
case_forms[a][b]
的所有 (a,b) key 对的列表。没问题吧?双重列表理解。在 Haskell 中一直做这样的事情:
[(number, case_name) for case_name in case_dict.keys() for number, case_dict in case_forms.items()]
除非这不会产生您期望的结果:
[('plural', 'instrumental'),
('singular', 'instrumental'),
('plural', 'vocative'),
('singular', 'vocative')]
我想知道如何解决这个问题。没有多少巧妙放置的
[:]
似乎可以解决问题。 最佳答案
这个怎么样 :
[ (number, case_name) for number, case_dict in case_forms.items() for case_name in case_dict.keys() ]
编辑以引用@juanpa.arrivillaga 关于为什么我的示例行为异常的评论:关于python - Python 2d 列表推导式中按引用传递的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43530548/