python - 按键对字典进行排序,其中键是字符串和数字的混合,然后使用排序的 key_values 创建一个新字典

标签 python sorting dictionary key

我有一本字典

dict1={'A_11':2,'A_10':5,'A_3':11,'A_2':6}

我想按键排序得到

dict1_sorted={'A_2':6,'A_3':11,'A_10':5,'A_11':2}

我试过了,还是有问题

{'A_10': 5, 'A_11': 2, 'A_2': 6, 'A_3': 11}.

有什么建议吗?谢谢。

最佳答案

如果您使用的是 Python 3.6+,dict 是有序的,因此您可以:

dict1={'A_11':2,'A_10':5,'A_3':11,'A_2':6}
def f(k):
    t = k.split('_')
    return t[0], int(t[1])
print({k: dict1[k] for k in sorted(dict1, key=f)})

这个输出:

{'A_2': 6, 'A_3': 11, 'A_10': 5, 'A_11': 2}

如果您使用的是较早的 Python 版本,则可以将字典替换为 collections.OrderedDict

关于python - 按键对字典进行排序,其中键是字符串和数字的混合,然后使用排序的 key_values 创建一个新字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51767011/

相关文章:

python - 无法让 raw_input 在我的测试站点上工作

java - 在 hashmap 中查找序列

java - 对 map 列表进行排序

c++ - 用小于迭代器之间的比较遍历 std::map

ios - 如何将 NSURLRequest 的 HTTPBody 参数检索到字典 : [NSObject: AnyObject] in Swift

python - 如何使用pytest跳过参数化测试

python - 按时间匹配出现数组的算法

python - 使用 pexpect 从 virtualbox 监听端口

ruby-on-rails - 合并两个ActiveRecord数组并按created_at排序

java - 创建一个方法来检查 Java 中的通用 HashMap 中是否存在值?