python - 创建一个以列表为值的字典,并对列表内的元素进行排序

标签 python list sorting dictionary

我正在构建一个函数,它接受一个包含三种不同类型元素的列表:整数、 float 和字符串。该函数将列表转换为字典,其中包含这三个不同类别中的每一个的键。然后将原始列表中的每个元素放入适当的键值对中(例如,列表中的所有字符串元素都分配给“字符串”键)。我能够使它正常工作,但是我无法对字典值(列表)中的值进行排序。这是我拥有的:

def list_dict_sort(input_list): 
    mixed_list =['asdf', 33, 'qwerty', 123.45, 890, 3.0, 'hi', 0, 'yes', 98765., '', 25]
    sorted_dict = {}                 
    sorted_dict['integer'] = []       
    sorted_dict['float'] = []
    sorted_dict['string'] = []
    for x in mixed_list:           
        if "int" in str(type(x)):  
            sorted_dict['integer'].append(x) 
        elif "float" in str(type(x)):
            sorted_dict['float'].append(x)
        elif "str" in str(type(x)):
            sorted_dict['string'].append(x)
    sorted_dict.sort
    return(sorted_dict)

list_dict_sort(mixed_list)

返回:

{'float': [123.45, 3.0, 98765.0],
 'integer': [33, 890, 0, 25],
 'string': ['asdf', 'qwerty', 'hi', 'yes', '']}

所以从结构上讲,这个函数得到了我想要的,除了值列表是排序的。我想要的确切输出是:

{'float': [3.0, 123.45, 98765.0],
 'integer': [0, 25, 33, 890],
 'string': ['asdf', 'hi', 'qwerty',  'yes', '']}

理想情况下,我想避免在此处进行导入(例如运算符),我只是在寻找一种对值列表进行排序的简单/基本方法。我尝试使用 sortsorted() 但无法弄清楚如何将它们构建到我已有的内容中。 是否有一种简洁的方法或更有效的方法?

最佳答案

您可以遍历这些值并对它们进行排序:

for v in sorted_dict.values():
    v.sort();

关于python - 创建一个以列表为值的字典,并对列表内的元素进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48652438/

相关文章:

python - 我可以将 SIGINT 发送到 Windows 上的 Python 子进程吗?

python - Django ajax 格式化约定

python - 如何获取嵌套列表中特定深度级别的所有元素?

c++ - 这两个功能可以合二为一吗?

xml - XSL Sort 将小写字母与大写字母分开处理

python - 如何在 python 文件处理中从 namedtuple 中提取数据

python - 如何将 python 中 Logger 对象的输出发送到文件?

不完全由数字组成的单词的 Python 列表理解

python - 让帕斯卡在多行中打印

c++ - 从文件高效构建排序数组