如何将Python字典中列表内的字符串值转换为整数?
解决字典内列表元素从字符串转整数的问题
首先说下你出错的原因:你写的代码在遍历字典时,用ct_dict.update({j:int(j)})给字典新增了一堆新键(就是那些数字字符串),导致字典在迭代过程中大小发生变化,所以抛出了RuntimeError: dictionary changed size during iteration。而且这逻辑根本不对,我们要改的是每个键对应列表里的元素,不是给字典加新键。
下面给你几种正确的实现方式:
方法一:直接修改原字典(推荐)
遍历字典的每个键,把对应列表的所有字符串元素转成整数后重新赋值:
ct_dict = { 'fr': ['55410', '94560', '52533', '63040', '52533'], 'de': ['73546', '64090', '60938', '75648', '60938'] } for key in ct_dict: ct_dict[key] = [int(num) for num in ct_dict[key]] print(ct_dict)
运行后输出:
{'fr': [55410, 94560, 52533, 63040, 52533], 'de': [73546, 64090, 60938, 75648, 60938]}
方法二:生成新字典(不修改原字典)
如果不想改动原字典,可以用字典推导式创建一个新字典:
ct_dict = { 'fr': ['55410', '94560', '52533', '63040', '52533'], 'de': ['73546', '64090', '60938', '75648', '60938'] } new_ct_dict = {key: [int(num) for num in nums] for key, nums in ct_dict.items()} print(new_ct_dict)
方法三:原地修改列表元素
因为列表是可变对象,也可以逐个修改列表里的元素,原字典会自动同步变化:
ct_dict = { 'fr': ['55410', '94560', '52533', '63040', '52533'], 'de': ['73546', '64090', '60938', '75648', '60938'] } for key in ct_dict: nums_list = ct_dict[key] for i in range(len(nums_list)): nums_list[i] = int(nums_list[i]) print(ct_dict)
内容的提问来源于stack exchange,提问作者Yuvi
相关产品推荐
相关产品推荐

