我有字符串a='51545'
我正在找到字符串中每个字符的索引,如此
modchar=[{i:a.index(i)} for i in a ]
#modchar=[{'5': 0}, {'1': 1}, {'5': 0}, {'4': 3}, {'5': 0}]
但我需要将其作为
#modchar=[{'5': 0}, {'1': 1}, {'5': 2}, {'4': 3}, {'5': 4}]
我们如何实现这一目标?
答案 0 :(得分:10)
在这种情况下,您可能希望enumerate
创建字典的字符串:
[{c: i} for i, c in enumerate(a)]
请注意,作为副作用,这发生在与原始解决方案相反的O(n)时间内,即O(n ^ 2)
答案 1 :(得分:3)
试试这个:
a='51545'
obj = []
for i in range(len(a)):
obj.append({a[i]: i})
运行如下:
>>> a='51545'
>>> obj = []
>>> for i in range(len(a)):
... obj.append({a[i]: i})
...
>>> obj
[{'5': 0}, {'1': 1}, {'5': 2}, {'4': 3}, {'5': 4}]
>>>
您可以使用enumerate:
[{value: index} for value, index in enumerate(a)]
运行方式:
>>> [{value: index} for index, value in enumerate(a)]
[{'5': 0}, {'1': 1}, {'5': 2}, {'4': 3}, {'5': 4}]
>>>
或者,您可以使用基本列表理解:
[{a[index]: index} for index in range(len(a))]
运行方式:
>>> [{a[index]: index} for index in range(len(a))]
[{'5': 0}, {'1': 1}, {'5': 2}, {'4': 3}, {'5': 4}]
>>>
enumerate
基本上是使用for
循环来获取索引,然后访问列表的组合:
>>> arr = [5, 8, 2, 4]
>>> for index, value in enumerate(arr):
... print index, value
...
0 5
1 8
2 2
3 4
>>>