Good way to compare many values/variables?

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By Caß

Hello,
for my game I need to compare a number of variables to check which one has the highest value.
So far it looks like this:

if A > B and A > C and A > D and A > E:
whatever
elif B > A and B > C and B > D and B > E:
whatever
etc.etc.

And as it could get to an alphabet amount of variables later, that would be quite ugly.
So what would be the best way of checking the highest value for a large number of variables?
I would also be fine if it were all keys in a dictionary,
but then I read it isn’t possible to directly check the highest value in a dictionary either.

Thanks for your help

:bust_in_silhouette: Reply From: jgodfrey

Here’s an example of finding the largest value in a dictionary…

func _ready():
	var dict = {"a": 10, "b": 5, "c": 22, "d": 55, "e": 27}
	var max_var = find_largest_dict_val(dict)
	print(max_var)        # prints "d"
	print(dict[max_var])  # prints "55"

func find_largest_dict_val(dict):
	var max_val = -999999
	var max_var
	for i in dict:
		var val =  dict[i]
		if val > max_val:
			max_val = val
			max_var = i
	return max_var

This works perfectly for me. Thanks alot!

Caß | 2020-03-22 00:11

I’m trying to do the opposite if that’s possible…
I want to find the smallest value, not sure how to modify your code to do that…

can you help?

Drewdus42 | 2023-01-11 21:46

Untested, but I think this should work:

func _ready():
	var dict = {"a": 10, "b": 5, "c": 22, "d": 55, "e": 27}
	var min_var = find_smallest_dict_val(dict)
	print(min_var)        # prints "b"
	print(dict[min_var])  # prints "5"

func find_smallest_dict_val(dict):
	var min_val = 999999
	var min_var
	for i in dict:
		var val =  dict[i]
		if val < min_val:
			min_val = val
			min_var = i
	return min_var

jgodfrey | 2023-01-11 21:51

That did work! I thought I tried that already, oh well, thanks so much!

Drewdus42 | 2023-01-11 22:01