提问人:Trung The Shrimp 提问时间:11/1/2023 最后编辑:Trung The Shrimp 更新时间:11/1/2023 访问量:80
在 Python 中使用一列值对二维数组进行对角线排序
Sort a 2-dimensional array diagonally with a column of values in Python
问:
如何按列对值进行排序,假设我有一个二维数组,如下所示: [A、B、C、D、E、F、G、H] [1, 3, 5, 7, 8, 1, 2, 2] 我希望它按底行数字的降序排序,例如: [英、丁、丙、乙、克、高、亚、法] [8, 7, 5, 3, 2, 2, 1, 1] 对不起,如果我的英语不好:(
这是我尝试计算字母表出现的时间
s = str(input()).upper()
z = list(set(s))
z.sort()
if z[0]==' ':
z.remove(z[0])
kitu = [z, [' ']* (len(z))]
dem = []
for i in range(len(z)):
kitu[1][i] = s.count(z[i])
dem.append(s.count(z[i]))
我正在使用 Python,并且很陌生,感谢您的帮助 <3
答:
0赞
Shubh
11/1/2023
#1
正如@guy提到的,您的预期结果具有较小的值,但我认为您可能会期待这一点 -
a = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'] # row1
b= [1, 3, 5, 7, 8, 1, 2, 2] # row2
d = dict(zip(a,b)) # create dictionary
#sort the dictionary {key:value} in descending order by it's value element
sorted_dict = dict(sorted(d.items(), key=lambda elem: elem[1], reverse=True))
# Convert the dict into 2D array
arr = [[k,v]for k,v in sorted_dict.items()]
print(arr)
希望这有帮助!
评论
0赞
aneroid
11/1/2023
如果去掉末尾的部分,排序后提取元组的第 0 个元素,则 OP 直接得到字母列表: → .此外,如果重复其中的任何元素,则制作字典将不起作用。然而,OP在他们尝试的解决方案中,这可能是也可能不是他们真正想要的。dict(...)
d.items()
[x[0] for x in sorted(d.items(), key=lambda elem: elem[1], reverse=True)]
['E', 'D', 'C', 'B', 'G', 'H', 'A', 'F']
a
z = list(set(s))
0赞
Shubh
11/1/2023
是的,没错!
评论
z = list(set(s))
set
list
list(set(a)) != a