考虑一个具有混合键类型的python字典:
chrDict = {'1':234,'12':45,'23':121,'2':117,'chX':12,'chY':32}
我想把那些字符串类型的键转换成int类型的数字键,剩下的就剩下了。我预期的结果是:
chrDict = {1:234,12:45,23:121,2:117,'chX':12,'chY':32}
我尝试了以下方法:
chrDict.update((int(i),j) for i,j in chrDict.items())
这给了我一个错误:
TypeError: cannot convert dictionary update sequence element #0 to a
sequence
然后我试着:
for i,j in chrDict.items():
try:
chrDict.update(int(x),y)
except:
pass
但是我得到的输出是不正确的,它没有改变:
{'1': 234, '12': 45, '23': 121, '2':117, 'chX': 12, 'chY': 32}
实际上,我希望这样做,以便以后更容易排序。如果我尝试:
sorted(chrDict.items())
它给我以下输出:
[('1', 234), ('12', 45), ('2', 117), ('23', 121), ('chX', 12), ('chY', 32)]
键值2
应该在键值1
之后,这是不发生的。你知道吗
所以请给我一些建议来解决这个问题。有没有更好的办法解决这个问题?你知道吗
奥斯汀的帖子似乎回答了你的具体问题。请注意,这是在创建一个新词典(而不是在位编辑当前词典)。你知道吗
此外,Python无法将typeint与typestr进行比较,以对包含这两种数据类型的列表进行排序(这将在python3中引发TypeError)——因此,如果您的最终目标是获得混合数据类型的排序列表(或创建您自己的自定义比较),您可能希望考虑另一种方法。你知道吗
使用字典理解和
isdigit()
来检查实际上是数字的字符串:示例:
相关问题 更多 >
编程相关推荐