python - 使用字典理解将函数应用于每个键的特定子键

标签 python dictionary dictionary-comprehension

我正在尝试执行字典理解,仅将函数应用于特定的内部子项。该函数从字符串中删除非英语单词。我希望它仅应用于字典中每个键的 'title' 子键。

# imports

import nltk

# function to remove non-English words

words = set(nltk.corpus.brown.words())

def strip_non_en(string, words):
    " ".join(w for w in nltk.wordpunct_tokenize(string)\
    if w.lower() in words or not w.isalpha())
    return string


# dict example:

meta_data = {
'12345.xml': {'author': ['Presley'],
'date': 1956,
'doi': None,
'title': 'Heartbreak Hotel'},
'67890.xml': {'author': ['Iglesias'],
'date': 1972,
'doi': None,
'title': 'For a little bit of your love Por Un Poco De Tu Amor'}
}

我只能让它将该函数应用于所有子键,这往往会删除 'author' 子键的内容。

感谢所有帮助。

最佳答案

这是构建逻辑的一种方法。与 Ajax1234 类似,但我向 strip_non_en 添加了一个额外的可选参数。

word_set = set(nltk.corpus.brown.words())

def strip_non_en(string, words=word_set, key=None):
    if key in (None, 'title'):
        string = ' '.join(w for w in nltk.wordpunct_tokenize(string) \
                          if w.lower() in words or not w.isalpha())
    return string    

new_dict = {a: strip_non_en(b, key=a) for a, b in meta_data.items()} 

关于python - 使用字典理解将函数应用于每个键的特定子键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50294019/

相关文章:

python - 如何检查 issubset 中以逗号分隔的整个单词?

python - Python 字母出现次数列表

python - python字典理解方法中的单行if else

python - 可以压缩成字典理解吗?

python - wxPython导入错误

python - 调用后python中的声明函数

python - numpy 任意精度线性代数

vba - 在 VBA 中查找字典对象的大小

c# - WebAPI - 使用 json 发布到字典

python - 如何从列表列表中创建字典