gpt4 book ai didi

python - Python 2d 列表理解中的按引用传递问题

转载 作者:行者123 更新时间:2023-11-28 17:17:16 25 4
gpt4 key购买 nike

接受这个字典中的字典:

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 2 list comprehensions have leaky scope, and it's not using the case_dict you think it is, it's using the case_dict from a previous comprehension (that leaked into the external scope)

Start a new interpreter session and you'll get the NameError

关于python - Python 2d 列表理解中的按引用传递问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43530548/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com