Python:在元组内访问字典值并快速排序字典值

0 投票
1 回答
3250 浏览
提问于 2025-04-15 23:43

我知道之前说得不太清楚。让我具体说说我在做什么。我这里有一个字典的列表:

dict = [{int=0, value=A}, {int=1, value=B}, ... n]

我想把它们组合起来,所以我用了itertools,这样我得到了一个元组(其实是一个内存对象,我用enumerate来遍历它,enumerate又给了我一个元组):

for (index, tuple) in enumerate(combinations(dict, 2)):

这就是我遇到的问题。我想找出组合中哪个项目的'int'值更大,哪个更小,并把它们分别赋值给变量(其实我用的不止两个组合,所以不能简单地说如果tuple[0]['int'] > tuple[1]['int']就赋值,因为这样写很多次太麻烦了)。

我本来打算把每个'int'值赋给一个变量,然后把它们放到一个列表里排序,再通过索引来找到对应的'int'值,然后再去访问我想要的字典,最后把字典赋值给一个变量,这样我就知道哪个更大了。但是我的列表很大,列表和变量的赋值会消耗很多资源,这样运行起来很慢(我刚写了一点点,就花了很长时间)。

所以我希望有人能告诉我一个快速的方法。其实我可以列出所有可能的赋值组合,用if/then语句,但那样会有五页的if/then和赋值,读起来和管理起来都很麻烦,特别是我想改的时候。

你可能已经猜到了,我对编程还是很新手。谢谢!

1 个回答

2
for (index, tuple) in enumerate(combinations(dict, 2)):
    thesmall = min(tuple, key=lambda d: d['int'])
    thelarge = max(tuple, key=lambda d: d['int'])

如果你需要的不仅仅是最小值和最大值,那就

    inorder = sorted(tuple, key=lambda d: d['int'])

这样你就可以按要求得到所有的字典,顺序也都整理好了。

撰写回答