将字符串列表转换为字符串和整数列表

时间:2019-04-17 06:38:49

标签: python-3.x

我有一个列表字典,每个列表有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,],}

谢谢

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])