拿这个字典的字典:

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/

10-11 22:34
查看更多