【发布时间】:2021-09-04 08:11:42
【问题描述】:
我有一本按点(只是数字)排序的字典。如果字典中的两个点相等,我想使用另一个具有相同键但其他数字(目标)的字典。因此,当分数相等时,我想对两个相等的元素进行排序,以使目标较多的元素排在另一个目标较少但分数相等的元素之前。这不得影响列表中具有不同点的其他元素。
这里是现在的代码:
import random
sorted_dict = {}
dict = {"t": 5, "m": 3, "s": 4, "d": 8}
dict_keys_points_2 = []
dict_keys_points = dict.keys()
for element in dict_keys_points:
dict_keys_points_2.append(element)
sorted_values = sorted(dict.values(), reverse=True)
for i in sorted_values:
for k in dict_keys_points_2:
if dict[k] == i:
sorted_dict[k] = dict[k]
dict_keys_points_2.remove(k)
break
dict_points = {}
dict_keys_unsorted = dict.keys()
a = sorted_dict.keys()
for element in a:
dict_keys.append(element)
for element in dict_keys:
dict_points[element] = random.randint(0, 5)
输出:
{'d': 2, 't': 4, 's': 0, 'm': 4} #(the goals)
{'d': 8, 't': 5, 's': 4, 'm': 3} #(the points)
所以如果有两个元素具有相同的点,我想看看目标并对这两个元素进行排序: 即:
{'d': 8, **'t': 5, 's': 5,** 'm': 3} #<-- two same points
{'d': 2, **'t': 0**, **'s': 4,** 'm': 4} #<-- s has more goals
#so after that the dictionary should look like this:
{'d': 8, **'s'**: 5, **'t'**: 5, 'm': 3}
【问题讨论】:
-
目前这个问题有点含糊,你能提供一些示例输入和它们各自的输出吗?
-
避免使用
dict作为变量名。 -
不要使用关键字来实例化变量或对象。将 dict 更改为其他内容。见stackoverflow.com/questions/37968516/…
-
好吧,这只是我实际代码中的一个测试页面,还有另一个名字
-
在您问题的代码中,具有相同键但其他数字(目标)的其他字典在哪里?请提供与您要执行的操作的描述相匹配的代码。
标签: python python-3.x sorting dictionary