gpt4 book ai didi

python - 嵌套字典排序时抛出关键错误

转载 作者:行者123 更新时间:2023-12-01 07:39:10 25 4
gpt4 key购买 nike

我有以下名为嵌套的字典:

{1: {1: {'x0': Decimal('21.600')}},
2: {1: {'x0': Decimal('223.560')}, 2: {'x0': Decimal('21.600')}},
3: {1: {'x0': Decimal('223.560')},
2: {'x0': Decimal('279.552')},
3: {'x0': Decimal('290.868')}},
4: {1: {'x0': Decimal('21.600')}, 2: {'x0': Decimal('223.560')}},
5: {1: {'x0': Decimal('21.600')}},
6: {1: {'x0': Decimal('223.560')}},
7: {1: {'x0': Decimal('223.560')}, 2: {'x0': Decimal('256.896')}},
8: {1: {'x0': Decimal('223.560')},
2: {'x0': Decimal('232.307')},
3: {'x0': Decimal('244.550')},
4: {'x0': Decimal('253.296')}},
9: {1: {'x0': Decimal('223.560')},
2: {'x0': Decimal('277.219')},
3: {'x0': Decimal('288.064')}},
10: {1: {'x0': Decimal('223.560')},
2: {'x0': Decimal('255.648')},
3: {'x0': Decimal('281.909')},
4: {'x0': Decimal('288.314')}},
11: {1: {'x0': Decimal('223.560')},
2: {'x0': Decimal('259.712')},
3: {'x0': Decimal('295.884')}},
12: {1: {'x0': Decimal('223.560')}, 2: {'x0': Decimal('288.064')}},
13: {1: {'x0': Decimal('223.560')},
2: {'x0': Decimal('273.152')},
3: {'x0': Decimal('299.412')}},
14: {1: {'x0': Decimal('223.560')},
2: {'x0': Decimal('259.712')},
3: {'x0': Decimal('295.884')}},
15: {1: {'x0': Decimal('223.560')}},
16: {1: {'x0': Decimal('223.560')},
2: {'x0': Decimal('246.303')},
3: {'x0': Decimal('272.564')},
4: {'x0': Decimal('278.969')}},
17: {1: {'x0': Decimal('223.560')}},
18: {1: {'x0': Decimal('223.560')}},
19: {1: {'x0': Decimal('223.560')},
2: {'x0': Decimal('249.746')},
3: {'x0': Decimal('260.590')}},
20: {1: {'x0': Decimal('223.560')},
2: {'x0': Decimal('239.300')},
3: {'x0': Decimal('265.560')},
4: {'x0': Decimal('271.965')},
5: {'x0': Decimal('294.708')}},
21: {1: {'x0': Decimal('223.560')}},
22: {1: {'x0': Decimal('223.560')}},
23: {1: {'x0': Decimal('223.560')}},
24: {1: {'x0': Decimal('223.560')},
2: {'x0': Decimal('273.152')},
3: {'x0': Decimal('299.412')}},
25: {1: {'x0': Decimal('223.560')}, 2: {'x0': Decimal('260.868')}},
26: {1: {'x0': Decimal('223.560')},
2: {'x0': Decimal('249.746')},
3: {'x0': Decimal('260.590')}},
27: {1: {'x0': Decimal('223.560')},
2: {'x0': Decimal('246.303')},
3: {'x0': Decimal('272.564')},
4: {'x0': Decimal('278.969')},
5: {'x0': Decimal('298.215')}},
28: {1: {'x0': Decimal('223.560')}},
29: {1: {'x0': Decimal('223.560')}},
30: {1: {'x0': Decimal('223.560')}, 2: {'x0': Decimal('295.596')}}

我正在尝试按每个嵌套字典内的 x0 值进行排序。

我只想对“内部”值进行排序,因此对于我的具体示例:

{1: {1: {'x0': Decimal('21.600')}},
2: {1: {'x0': Decimal('21.600')}, 2: {'x0': Decimal('223.560')}},
[...]

我正在尝试使用 sorted() 方法对其进行排序:

sorted_dict = sorted(nested.values(), key=lambda x: x['x0'])

但是,这给了我以下错误:

KeyError: 'x0'

如您所见,在 2 内部,嵌套字典已排序。

编辑

澄清一下,我的字典实际上包含另一个键:

{1: {1: {'text': 'Hi there!', 'x0': Decimal('21.600')}},
2: {1: {'text': 'My email is', 'x0': Decimal('223.560')},
2: {'text': 'example@domain.com', 'x0': Decimal('21.600')}},
[...]

在实现 @Willem 的解决方案时,仅对 x0 进行排序,但 text 键并未与其一起排序:

{1: {1: {'text': 'Hi there!', 'x0': Decimal('21.600')}},
2: {1: {'text': 'My email is', 'x0': Decimal('21.600')},
2: {'text': 'example@domain.com', 'x0': Decimal('223.560')}},
[...]

最佳答案

x0 键在子词典中定义。因此,您无法通过对外部值使用 sorted(..) 对其进行排序。

您可以构建一个字典,如下所示:

from operator import itemgetter

{k : dict(enumerate(sorted(v.values(), key=itemgetter('x0')), 1))
for k, v in nested.items() }

我们在这里假设子词典的键有键12,...然而,使用列表而不是字典可能更有意义键以这种方式增加。

对于给定的示例数据,这给我们:

{1: {1: {'x0': Decimal('21.600')}},
2: {1: {'x0': Decimal('21.600')}, 2: {'x0': Decimal('223.560')}},
3: {1: {'x0': Decimal('223.560')},
2: {'x0': Decimal('279.552')},
3: {'x0': Decimal('290.868')}},
4: {1: {'x0': Decimal('21.600')}, 2: {'x0': Decimal('223.560')}},
5: {1: {'x0': Decimal('21.600')}},
6: {1: {'x0': Decimal('223.560')}},
7: {1: {'x0': Decimal('223.560')}, 2: {'x0': Decimal('256.896')}},
8: {1: {'x0': Decimal('223.560')},
2: {'x0': Decimal('232.307')},
3: {'x0': Decimal('244.550')},
4: {'x0': Decimal('253.296')}},
9: {1: {'x0': Decimal('223.560')},
2: {'x0': Decimal('277.219')},
3: {'x0': Decimal('288.064')}},
10: {1: {'x0': Decimal('223.560')},
2: {'x0': Decimal('255.648')},
3: {'x0': Decimal('281.909')},
4: {'x0': Decimal('288.314')}},
11: {1: {'x0': Decimal('223.560')},
2: {'x0': Decimal('259.712')},
3: {'x0': Decimal('295.884')}},
12: {1: {'x0': Decimal('223.560')}, 2: {'x0': Decimal('288.064')}},
13: {1: {'x0': Decimal('223.560')},
2: {'x0': Decimal('273.152')},
3: {'x0': Decimal('299.412')}},
14: {1: {'x0': Decimal('223.560')},
2: {'x0': Decimal('259.712')},
3: {'x0': Decimal('295.884')}},
15: {1: {'x0': Decimal('223.560')}},
16: {1: {'x0': Decimal('223.560')},
2: {'x0': Decimal('246.303')},
3: {'x0': Decimal('272.564')},
4: {'x0': Decimal('278.969')}},
17: {1: {'x0': Decimal('223.560')}},
18: {1: {'x0': Decimal('223.560')}},
19: {1: {'x0': Decimal('223.560')},
2: {'x0': Decimal('249.746')},
3: {'x0': Decimal('260.590')}},
20: {1: {'x0': Decimal('223.560')},
2: {'x0': Decimal('239.300')},
3: {'x0': Decimal('265.560')},
4: {'x0': Decimal('271.965')},
5: {'x0': Decimal('294.708')}},
21: {1: {'x0': Decimal('223.560')}},
22: {1: {'x0': Decimal('223.560')}},
23: {1: {'x0': Decimal('223.560')}},
24: {1: {'x0': Decimal('223.560')},
2: {'x0': Decimal('273.152')},
3: {'x0': Decimal('299.412')}},
25: {1: {'x0': Decimal('223.560')}, 2: {'x0': Decimal('260.868')}},
26: {1: {'x0': Decimal('223.560')},
2: {'x0': Decimal('249.746')},
3: {'x0': Decimal('260.590')}},
27: {1: {'x0': Decimal('223.560')},
2: {'x0': Decimal('246.303')},
3: {'x0': Decimal('272.564')},
4: {'x0': Decimal('278.969')},
5: {'x0': Decimal('298.215')}},
28: {1: {'x0': Decimal('223.560')}},
29: {1: {'x0': Decimal('223.560')}},
30: {1: {'x0': Decimal('223.560')}, 2: {'x0': Decimal('295.596')}}}

或使用额外的'text'键:

{1: {1: {'text': 'Hi there!', 'x0': Decimal('21.600')}},
2: {1: {'text': 'example@domain.com', 'x0': Decimal('21.600')},
2: {'text': 'My email is', 'x0': Decimal('223.560')}}}

关于python - 嵌套字典排序时抛出关键错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56813177/

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