首页 > 解决方案 > 通过它们在字母表中出现的索引“排列”字符串中的每个字符

问题描述

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

我将非常感谢解决方案,我该如何在 Python 中做到这一点。谢谢

在此处输入图像描述

标签: pythonarrayssortingalphabetical

解决方案


这将为您工作:

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]]

推荐阅读