将嵌套列表中的字符串替换为 Python 中字典中的值

Replace string from nested list with value from Dictionary in Python

我有一个列表列表

month_list = [['January', 'february', 'march'], ['april', 'may', 'june']]

这本字典的键 = 字符串,值 = int

month_ids = {     'January': 1,
                  'february': 2,
                  'march': 3,
                  'april': 4,
                  'may': 5,
                  'june': 6
                  }

我可以用字典中的整数替换列表列表中的字符串吗?

如果要保持初始列表的嵌套结构,可以将嵌套列表理解表达式写为:

>>> id_list = [[month_ids[month] for month in month_set ] for month_set in month_list]
>>> id_list
[[1, 2, 3], [4, 5, 6]]

但是,如果您需要 展平列表,那么您可以利用 itertools.chain()列表理解 作为:

>>> from itertools import chain

>>> id_list = [month_ids[month] for month in chain(*month_list)]
>>> id_list
[1, 2, 3, 4, 5, 6]

此处 chain(*month_list) 将扁平化您的月份列表。然后我迭代一个月份列表,并使用 中的 month_ids[month] 创建另一个包含 monthid 的列表]列表理解表达式。

这一行

for i in range(len(month_list)):
    month_list[i] = months_ids[month_list[i]]

month_list = [months_ids[x] for x in month_list]

month_list = list(map(lambda x: months_ids[x], month_list))

您可以使用 maplambda

map(lambda month: month_ids.get(month), month_list)

添加这一行很有希望。

month_list = list(month_ids.values())