我要解决的问题是:我有一个字符串,例如"abcabcdefdefjhi"
。我希望结果是这样的数字输出:
a: 0, 3
b: 1, 4
c: 2, 5
.
.
.
P.S。该字符串是阿拉伯语,但对于了解阿拉伯语和英语的用法仍然很有帮助。
答案 0 :(得分:1)
一行:
c = "abcabcdefdefjhi"
print "\n".join(["%s: %s" %( e, ", ".join([ str(j) for j, e2 in enumerate(c) if e2==e]) ) for i, e in enumerate(sorted(set(c)))])
1)不重复的列表:
sorted(set(c))
['a','b','c','d','e','f','h','i','j']
2)按字母顺序列出职位
[ (i, e) for i, e in enumerate(sorted(set(c)))]
[(0,'a'),(1,'b'),(2,'c'),(3,'d'),...,(6,'h'),(7 ,“ i”),(8,“ j”)]
3)按字母分组职位:
[( e, [ j for j, e2 in enumerate(c) if e2==e] ) for i, e in enumerate(sorted(set(c)))]
[('a',[0,3]),('b',[1,4]),('c',[2,5]),...,('i',[ 14]),('j',[12])]
4)减少为一行
print "\n".join(["%s: %s" %( e, ", ".join([ str(j) for j, e2 in enumerate(c) if e2==e]) ) for i, e in enumerate(sorted(set(c)))])
a:0、3
b:1、4
c:2、5
d:6,9
e:7、10
f:8、11
h:13
i:14
j:12
答案 1 :(得分:0)
使用枚举,如下所示:
def findOccurrences(s, ch):
return [i for i, letter in enumerate(s) if letter == ch]
print(findOccurrences('abcabcdefdefjhi', 'a'))
输出:
[0, 3]
答案 2 :(得分:0)
列表字典可能比较合适,可以将字母映射到索引列表:
s = "abcabcdefdefjhi"
indices = {}
for i, l in enumerate(s):
if l not in indices:
indices[l] = []
indices[l].append(i)
for k, v in indices.items():
print("{}: {}".format(k, str(v)[1:-1]))
输出:
a: 0, 3
b: 1, 4
c: 2, 5
d: 6, 9
e: 7, 10
f: 8, 11
j: 12
h: 13
i: 14
或者,用"لوحة المفاتيح ال"
进行测试:
ل: 0, 6, 15
و: 1
ح: 2, 12
ة: 3
: 4, 13
ا: 5, 9, 14
م: 7
ف: 8
ت: 10
ي: 11
答案 3 :(得分:0)
轻松尝试:
for index,i in enumerate(s,0):
print index, ':',i
输出:
答案 4 :(得分:0)
使用集合
中的 defaultdictfrom collections import defaultdict
s = 'abcabcdefdefjhi'
dd = defaultdict(list)
for i, v in enumerate(s):
dd[v].append(i)
for k, v in dd.items():
print('{}: {}'.format(k, ', '.join(list(map(str,v)))))
a: 0, 3 b: 1, 4 c: 2, 5 d: 6, 9 e: 7, 10 f: 8, 11 j: 12 h: 13 i: 14