首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何同时显示从字典中获取的键和更新值?

如何同时显示从字典中获取的键和更新值?
EN

Stack Overflow用户
提问于 2019-05-22 21:58:01
回答 2查看 111关注 0票数 0

我的代码应该删除字典中长度不超过7个字符的同义词,一旦我完成了所有删除,我将需要按键顺序显示它。但是,我不知道如何将键和更新值放在一起。预期的输出应与以下内容完全相同:

(按字母顺序排序的键):

代码语言:javascript
复制
dangerous : ['hazardous', 'perilous', 'uncertain'] 
show : ['communicate', 'manifest', 'disclose']
slow : ['leisurely', 'unhurried']
代码语言:javascript
复制
word_dict = {'show': ['display', 'exhibit', 'convey', 'communicate', 'manifest', 'disclose'],
             'slow': ['unhurried', 'gradual', 'leisurely', 'late', 'behind', 'tedious', 'slack'],
             'dangerous': ['perilous', 'hazardous', 'uncertain']}

def main():
    edited_synonyms = remove_word(word_dict)
    key_order(edited_synonyms)

def remove_word(word_dict):
    dictionary = {}

    synonyms_list = word_dict.values()
    new_list = []
    for i in synonyms_list:
        new_list.extend(i)

    for word in new_list:
        letter_length = len(word)
        if letter_length <= 7:
            new_list.pop(new_list.index(word))

    value = new_list 
    keys_only = word_dict.keys()
    key = keys_only
    dictionary[key] = value
    return dictionary


def key_order(word_dict):
    word_list = list(word_dict.keys())
    word_list.sort()
    for letter in word_list:
        value = word_list[letter]
        print(letter, ": ", value)

main()

到目前为止发生的一个错误是"TypeError: unhashable type:'dict_keys'“

EN

回答 2

Stack Overflow用户

发布于 2019-05-22 22:10:23

代码语言:javascript
复制
word_dict = {'show': ['display', 'exhibit', 'convey', 'communicate', 'manifest', 'disclose'],
             'slow': ['unhurried', 'gradual', 'leisurely', 'late', 'behind', 'tedious', 'slack'],
             'dangerous': ['perilous', 'hazardous', 'uncertain']}

result = {i:list(filter(lambda x: len(x)>7, word_dict[i])) for i in word_dict }

key_sorted =sorted(result.keys(), key=lambda x:x.lower())
# sorting alphabetically
solution = {i:result[i] for i in key_sorted}

print(solution)

output

{'dangerous': ['perilous', 'hazardous', 'uncertain'], 
 'show': ['communicate', 'manifest', 'disclose'],
 'slow': ['unhurried', 'leisurely']
 }
票数 1
EN

Stack Overflow用户

发布于 2019-05-22 22:15:14

代码语言:javascript
复制
    value = new_list 
    keys_only = word_dict.keys()
    key = keys_only
    dictionary[key] = value

这是引发错误的代码。key不是单个键,它是一个dict_keys类型的对象(由word.dict.keys()返回)。这样的对象不能是单个键,因为字典使用散列映射,并且,就像错误所说的那样,dict_keys是不可散列的。

最简单的解决方案(保留代码)是将整个函数放在一个循环中,首先对键进行迭代,这样在每次迭代时,您只需处理一个字典条目。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56258595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档