"rank" 字符串中的每个字符按其在字母表中出现的索引
"rank" each character in a string by the index at which they appear in the alphabet
我不知道如何从 arr1 = ['johaj'] --> arr2 = ['2','4','1','0','3' ]
我无法很好地描述我的意思,所以我希望你能从这个例子中理解它。我需要获取 'alphabetical indexes'.
数组
非常感谢您的解决方案,我该如何在 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
将是一个 two-dimensional 数组,它将 return arr1
中每个项目的排名。例如,如果:
arr1 = ['johaj', 'foo', 'bar']
它将输出:
[[2, 4, 1, 0, 3], [0, 1, 2], [1, 0, 2]]
我不知道如何从 arr1 = ['johaj'] --> arr2 = ['2','4','1','0','3' ] 我无法很好地描述我的意思,所以我希望你能从这个例子中理解它。我需要获取 'alphabetical indexes'.
数组非常感谢您的解决方案,我该如何在 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
将是一个 two-dimensional 数组,它将 return arr1
中每个项目的排名。例如,如果:
arr1 = ['johaj', 'foo', 'bar']
它将输出:
[[2, 4, 1, 0, 3], [0, 1, 2], [1, 0, 2]]