Tạo dictionary ánh xạ mỗi ký tự đến danh sách chỉ số (1-based) của chuỗi chứa ký tự đó trong danh sách. Sử dụng defaultdict(set), enumerate() và add().
Mã nguồn
from collections import defaultdict
my_list = ['p y t h o n', 'i s', 'f u n', 't o', 'l e a r n']
print("Danh sách:", my_list)
my_result = defaultdict(set)
for index, element in enumerate(my_list):
for sub in element.split():
my_result[sub].add(index + 1) # 1-based index
# Chuyển set sang list cho dễ đọc
my_result = {key: list(val) for key, val in my_result.items()}
print("Ánh xạ ký tự -> chỉ số chuỗi:", my_result)
Kết quả
Danh sách: ['p y t h o n', 'i s', 'f u n', 't o', 'l e a r n']
Ánh xạ ký tự -> chỉ số chuỗi: {'p': [1], 'y': [1], 't': [1, 4], 'h': [1], 'o': [1, 4], 'n': [1, 3, 5], 'i': [2], 's': [2], 'f': [3], 'u': [3], 'l': [5], 'e': [5], 'a': [5], 'r': [5]}
Giải thích
- Mỗi phần tử trong list là chuỗi các ký tự cách nhau bởi dấu cách.
enumerate(my_list)cho (index 0-based, chuỗi).element.split()tách thành các ký tự đơn lẻ.defaultdict(set)tự động tạo set rỗng,add(index+1)thêm chỉ số 1-based (tránh trùng lặp).- Cuối cùng chuyển set sang list.
Kết quả: 't' xuất hiện ở chuỗi 1 ('python') và chuỗi 4 ('to') → [1, 4].