【问题标题】:How to change set into list and sort by the key with alphabetically ordered values in a dictionary?如何将集合更改为列表并按字典中按字母顺序排列的值的键排序?
【发布时间】:2020-05-14 10:02:47
【问题描述】:

我的代码有一个特殊问题(见下文)。主要是,我希望我的函数返回字典,使得键按升序排列,相应的值按字母顺序排列,并且我希望将具有相同键的值作为列表停用:[{key1: [value1, value2, etc .], key2: [value1, value2, etc.], etc.}, ...], 其中key1

使用我的代码,我得到: [(1, {'s', 'c', 'n', 'à', 'd', 'a', 'l'}), (2, {'et', 'si', 'se' , 'là', 'la', 'un', 'il', 'le', 'en', 'du', 'de', 'sa', 'ce'}), (3, {'ses' , 'qui', 'ils' 等} ...]

有人可以帮我修改我的代码吗?

def words_by_length(fileName):
    dict_wl = {}
    with open(fileName, 'r') as f:
        for line in f:
            tmp_str = line.lower().replace("?", " ").replace("'", " ").replace(".", " ").replace(",", " ")\
                .replace("-", " ").split()
            for word in tmp_str:
                words = len(word)
                if word.isalpha() and words in dict_wl:
                    dict_wl[words].add(word)
                else:
                    dict_wl[words] = {word}
#        print(dict_wl)
    s_dict_wl = sorted(dict_wl.items())
    return s_dict_wl

我正在使用以下文本(已保存为文件)来测试代码: Et, sous ses pieds, les coups profonds, les coups obstinés des rivelaines continuaient。 Les camarades étaient tous là, il les entendait le suivre à chaque enjambée。 N'était-ce pas la Maheude、sous cette pièce de betteraves、l'échine cassée、dont le souffle montait si rauque、accompagné par le ronflement du ventilateur ? A gauche, à droite, plus loin, il croyait en reconnaître d'autres, sous les blés, les haies vives, les jeunes arbres。 Maintenant, en plein ciel, le soleil d'avril rayonnait dans sa gloire, échauffant la terre qui enfantait。 Du flanc nourricier jaillissait la vie, les bourgeons crevaient en feuilles vertes, les champs tressaillaient de la poussée des herbes。 De toutes parts, des graines se gonflaient, s'allongeaient, gerçaient la plaine, travaillées d'un besoin de chaleur et de lumière。 Un débordement de sève coulait avec des voix chuchotantes, le bruit des Germes s'épandait en un grand baiser。 Encore, encore, de plus en plus distinctement, comme s'ils se fussent rapprochés du sol, les camarades tapaient。 Aux rayons enflammés de l'astre, par cette matinée de jeunesse, c'était de cette rumeur que la campagne était Grosse。 Des hommes poussaient, une armée noire, vengeresse, qui Germait lentement dans les sillons, grandissant pour les récoltes du siècle futur, et dont la germination allait faire bientôt éclater la terre。

【问题讨论】:

  • 来自“Germinal”的引用...仅此一项就值得 +1...

标签: python dictionary


【解决方案1】:

你已经不远了……

items() 进行排序后,您只需将其转换回字典并对值进行排序:

    ...
#        print(dict_wl)
    s_dict_w1 = {k: sorted(v) for k,v in sorted(dict_w1.items())}
    return s_dict_wl

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-07
    • 1970-01-01
    • 2012-08-12
    • 1970-01-01
    • 1970-01-01
    • 2018-09-15
    相关资源
    最近更新 更多