📜  Python - 字符串列表中的字符索引映射

📅  最后修改于: 2022-05-13 01:54:24.393000             🧑  作者: Mango

Python - 字符串列表中的字符索引映射

给定一个 String 列表,将字符串中的每个字符映射到它出现的索引。

方法 #1:使用 defaultdict() + enumerate() + split()

以上功能的组合可以解决这个问题。在这里,我们使用 defaultdict() 获取空列表来存储索引, enumerate() 用于检查索引, split() 可用于拆分字符。

Python3
# Python3 code to demonstrate working of 
# Charatacter indices Mapping in String List
# Using defaultdict() + enumerate() + split()
from collections import defaultdict
  
# initializing list
test_list = ['g f g', 'i s', 'b e s t', 'f o r', 'g e e k s'] 
  
# printing original list
print("The original list is : " + str(test_list))
  
res = defaultdict(set)
  
# loop for assigning indices
for idx, ele in enumerate(test_list):
    for sub in ele.split():
        res[sub].add(idx + 1)
  
# dictionary comprehension to remake result 
res = {key: list(val) for key, val in res.items()}
  
# printing result 
print("The mapped dictionary : " + str(res))


Python3
# Python3 code to demonstrate working of 
# Charatacter indices Mapping in String List
# Using enumerate() + dictionary comprehension
  
# initializing list
test_list = ['g f g', 'i s', 'b e s t', 'f o r', 'g e e k s'] 
  
# printing original list
print("The original list is : " + str(test_list))
  
# using dictionary comprehension to bind result
res = {sub : [key + 1 for key, val in enumerate(test_list) if sub in val] 
       for ele in test_list for sub in ele.split()}
  
# printing result 
print("The mapped dictionary : " + str(res))


输出
The original list is : ['g f g', 'i s', 'b e s t', 'f o r', 'g e e k s']
The mapped dictionary : {'g': [1, 5], 'f': [1, 4], 'i': [2], 's': [2, 3, 5], 'b': [3], 'e': [3, 5], 't': [3], 'o': [4], 'r': [4], 'k': [5]}

方法#2:使用 enumerate() + 字典理解

这是可以执行此任务的另一种方式。这以类似的方式执行任务,只是在字典理解中以一种线性方式执行。

蟒蛇3

# Python3 code to demonstrate working of 
# Charatacter indices Mapping in String List
# Using enumerate() + dictionary comprehension
  
# initializing list
test_list = ['g f g', 'i s', 'b e s t', 'f o r', 'g e e k s'] 
  
# printing original list
print("The original list is : " + str(test_list))
  
# using dictionary comprehension to bind result
res = {sub : [key + 1 for key, val in enumerate(test_list) if sub in val] 
       for ele in test_list for sub in ele.split()}
  
# printing result 
print("The mapped dictionary : " + str(res))
输出
The original list is : ['g f g', 'i s', 'b e s t', 'f o r', 'g e e k s']
The mapped dictionary : {'g': [1, 5], 'f': [1, 4], 'i': [2], 's': [2, 3, 5], 'b': [3], 'e': [3, 5], 't': [3], 'o': [4], 'r': [4], 'k': [5]}