Python &引用;排名;字符串中的每个字符按其在字母表中出现的索引显示

Python &引用;排名;字符串中的每个字符按其在字母表中出现的索引显示,python,arrays,sorting,alphabetical,Python,Arrays,Sorting,Alphabetical,例如,我不知道如何从arr1=['johaj']->arr2=['2','4','1','0','3'] 我不能很好地描述我的意思,所以我希望你能从这个例子中理解它。我需要得到“字母索引”数组 对于这个解决方案,我将非常感激,我怎样才能在Python中做到这一点。 多谢各位 如果要将字符串转换为字母字符索引列表,可以制作一个以字母为键、索引为值的字典。然后,通过本词典循环字符串并获取值(索引),然后将其附加到列表中。我认为需要更好地解释问题或提供示例代码,您提供的信息不足以回答问题 查看您提供的

例如,我不知道如何从arr1=['johaj']->arr2=['2','4','1','0','3'] 我不能很好地描述我的意思,所以我希望你能从这个例子中理解它。我需要得到“字母索引”数组

对于这个解决方案,我将非常感激,我怎样才能在Python中做到这一点。 多谢各位


如果要将字符串转换为字母字符索引列表,可以制作一个以字母为键、索引为值的字典。然后,通过本词典循环字符串并获取值(索引),然后将其附加到列表中。

我认为需要更好地解释问题或提供示例代码,您提供的信息不足以回答问题

查看您提供的信息。我相信您正在尝试使用排序索引对数组进行排序,但顺序是否为原始数组

更简单一点,

     my_string = "johaj"
     my_array = ["a','h','j','j','o']
   
     # return the index of the letter in my_array and add it to a secondary 
     array that matches the order of my_string
这是正确的吗

编辑:这是我能想到的最好的了。我希望有帮助

    my_string = input("word? > ")
    my_array = []
    result_array = []
    counter = 0
    my_dict = {}

    for char in my_string:
        my_array.append(char)

    sorted_array = sorted(my_array)

    for i in sorted_array:
        my_dict[i] = counter
    counter += 1

    for i in my_string:
        result_array.append(my_dict[i])

    print(result_array)

这将对您有用:

arr1 = ['johaj']

arr2 = []
for item in arr1:
  origins = list(zip(item, list(range(len(item)))))
  origins.sort()
  ranks = list(range(len(item)))
  positioned = {origin:rank for origin, rank in zip(origins, ranks)}

  ranked = [None] * len(item)
  for origin in origins:
    ranked[origin[1]] = positioned[origin]
  arr2.append(ranked)

print(arr2)
输出:

[[2, 4, 1, 0, 3]]
因为
arr1
是一个数组,所以必须迭代该数组才能获得每个项目。这意味着
arr2
将是一个二维数组,它将返回
arr1
中每个项目的等级。例如,如果:

arr1 = ['johaj', 'foo', 'bar']
它将输出:

[[2, 4, 1, 0, 3], [0, 1, 2], [1, 0, 2]]

我不明白你想发生什么。
arr2
中的索引与
arr1
中的字母顺序为hjoja,而不是按正常或相反的字母顺序。你能准确地描述一下你想要什么吗?如果我通过字符串'johaj'举例来说,那么字母表中的第一个是'a',然后是'h',然后是'j'(这里我需要看看哪个'j'是数组中的第一个),那么你就有'o'。所以如果你要对这个数组排序,你会有['a','h','j','j','o',,但我不想对它排序。我需要记住顺序-['j'、'o'、'h'、'a'、'j']并获得索引-在这种情况下,它将是:['2'、'4'、'1'、'0'、'3']我想你想说的是,你想根据字母表中每个字符出现的索引对字符串中的每个字符进行“排序”。是的,这就是我需要的我把它放错了,我有一个字符数组-['j'、'o'、'h'、'a'、'j']需要获取数组,其中将是该数组的索引-['2'、'4'、'1'、'0'、'3']抱歉,我不了解索引属性的逻辑。这不是字母顺序,那是什么?我试图发布一张关于我的意思的图片。我真的不知道如何更好地解释:(.没错,这就是我需要的。谢谢你的帮助,看起来我已经找到了解决方案。计数器+=1必须在for循环中,然后它可以工作,但不能完全工作,因为您将通过输入获得:'johaj'-->[3,4,1,0,3]。因此更多相同的字符存在问题。但我已经找到了不同的解决方案。我看到了另一个解决方案