我有一个列表字典,每个列表有3个元素,我想将2nd和3rd元素从字符串转换为int
dict = {1:['string', '2', '3',],
2:['string', '2', '3',],
3:['string', '2', '3',],}
成为:
dict = {1:['string', 2, 3,],
2:['string', 2, 3,],
3:['string', 2, 3,],}
谢谢
答案 0 :(得分:3)
首先,不要命名词典 dict ,因为它是保留关键字,并且您不想覆盖它。
来解决您的问题。
d = {
1: ['string', '23', '3'],
2: ['string', '2', '3'],
3: ['string', '2', '3'],
}
d2 = {
k: [
int(i) if i.isdigit() else i
for i in v
]
for k, v in d.items()
}
将为您提供以下输出:
{
1: ['string', '23', '3'],
2: ['string', '2', '3'],
3: ['string', '2', '3']
}
{
1: ['string', 23, 3],
2: ['string', 2, 3],
3: ['string', 2, 3]
}
答案 1 :(得分:0)
如果字典中包含许多元素,则可能不想在内存中创建第二个字典,而是就地修改现有的一个字典:
data = {
1: ['string', '2', '3'],
2: ['string', '2', '3'],
3: ['string', '2', '3'],
}
for v in data.values():
v.append(int(v.pop(1)))
v.append(int(v.pop(1)))
print(data)
输出:
{1: ['string', 2, 3], 2: ['string', 2, 3], 3: ['string', 2, 3]}
答案 2 :(得分:-1)
如果您想手动进行
dict = {1:['string', int('2'), int('3'),],
2:['string', int('2'), int('2'),],
3:['string', int('2'), int('2'),],}
或者如果您有两行以上
for i in dict:
for j in dict[i]:
if j==1 and j==2:
dict[i][j]=int(dict[i][j])