将特定字母映射到单词列表

时间:2014-04-09 05:18:43

标签: list python-3.x

有人可以建议一种编写代码的方法,它会自动将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-'

1 个答案:

答案 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的列表理解来实现的。

希望它有所帮助。