替换列表列表中的值

时间:2016-11-24 18:00:08

标签: python python-3.x replace

Python 3. Windows 10.

我有一个分层列表,我想用指定的值更改它们的值。

例如:我有分层列表

{0: 'da-1.txt',
 1: 'da-2.txt',
 2: 'en-1.txt',
 3: 'en-2.txt',
 4: 'it-1.txt',
 5: 'it-2.txt'}

我有一本字典

l = [[['da-1.txt', 'it-1.txt'], 'da-2.txt'], ['en-1.txt', 'en-2.txt], 'it-2.txt']

我想在不破坏列表层次结构的情况下,相应地将列表的值替换为字典的值。

输出应该是这样的:

using System;

namespace EuroMonitorTest
{
    class MainClass
    {
        public static void Main(string[] args)
        {
            int answer = 5;

            Console.WriteLine("Please enter a number less then 5");
            int value = Convert.ToInt32(Console.ReadLine());

            if (value <= answer)
            {
                Console.WriteLine("The number required to get to  5 is " + (answer - value));
            }
            else if (value > answer)
            {
                Console.WriteLine("That number is over 5, Try Again");
            }

            Console.ReadKey();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您可以查看列表,并检查每个元素是否为列表。如果不是,请将其替换为字典的相应元素(如果存在)。如果是,则递归地应用相同的算法:

def rec_replace(l, d):
    for i in range(len(l)):
        if isinstance(l[i], list):
            rec_replace(l[i], d)
        else :
            l[i] = d.get(l[i], l[i])

注意:
此实现是列表元素的就地替换。或者,也可以使用类似的方法返回新列表。