gpt4 book ai didi

python - 根据其他列表对字典中的列表进行排序,而无需再次分配它们

转载 作者:行者123 更新时间:2023-12-02 01:34:59 24 4
gpt4 key购买 nike

我有一本大字典,我想根据一个列表对其中的列表值进行排序。对于一个简单的字典我会这样做:

d = {'a': [2, 3, 1], 'b': [103, 101, 102]}

d['a'], d['b'] = [list(i) for i in zip(*sorted(zip(d['a'], d['b'])))]

print(d)

输出:

{'a': [1, 2, 3], 'b': [102, 103, 101]}

我的实际字典有许多带有列表值的键,因此像上面那样解压缩 zip 元组变得不切实际。有没有办法在不指定所有键和值的情况下检查它们?像这样的东西:

d.values() = [list(i) for i in zip(*sorted(zip(d.values())))]

使用d.values()会导致SyntaxError:无法分配函数调用,但我正在寻找类似的东西。

最佳答案

如果您有很多个键(并且它们都具有相同长度的列表值),使用 pandas sort_values将是一种有效的排序方式:

d = {'a': [2, 3, 1], 'b': [103, 101, 102], 'c' : [4, 5, 6]}
d = pd.DataFrame(d).sort_values(by='a').to_dict('list')

输出:

{'a': [1, 2, 3], 'b': [102, 103, 101], 'c': [6, 4, 5]}

如果内存有问题,您可以就地排序,但是,由于这意味着 sort_values 返回 None,因此您无法再链接操作:

df = pd.DataFrame(d)
df.sort_values(by='a', inplace=True)
d = df.to_dict('list')

输出与上面相同。

关于python - 根据其他列表对字典中的列表进行排序,而无需再次分配它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72573286/

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