有人可以建议一种编写代码的方法,它会自动将letter_str中的字母映射到dic_key(包含与word_lst中字词长度匹配的破折号的字典键字符串类型)?
因此,只有当列表中的每个单词出现在同一位置时,无论列表中有多少单词,都会出现映射。
如果单词列表中所有单词的任何位置都没有出现任何字母,则new_dic_key将为' ----'。请参阅以下示例
由于
word_lst = ['ague', 'bute', 'byre', 'came', 'case', 'doze']
dic_key = '----'
letters_str ='abcdefghijklmnopqrstuvwxyz'
new_dic_key = '---e'
如果
word_list = ['bute', 'byre']
new_dic_key = 'b--e'
或
word_list = ['drek', 'drew', 'dyes']
new_dic_key = 'd-e-'
答案 0 :(得分:1)
如果word_list
中的字词长度相同,则此代码会提供您想要的内容:
word_list = ['drek', 'drew', 'dyes']
cols = []
for i in range(len(word_list[0])):
cols.append([])
for word in word_list:
for i, ch in enumerate(word):
cols[i].append(ch)
pattern = [item[0] if len(set(item)) == 1 else '-' for item in cols]
print ''.join(pattern)
d-e-
解释:
我们将cols
初始化为列表列表。它将包含word_list
字样中字母的二维表示。填充cols
之后,这就是它的样子:
[['d', 'd', 'd'], ['r', 'r', 'y'], ['e', 'e', 'e'], ['k', 'w', 's']]
因此,只有当上面子列表中的所有元素都具有相同的字母时,最终结果new_dic_key
才会包含该字母,否则它将包含-
。这是使用pattern
的列表理解来实现的。
希望它有所帮助。