将嵌套列表中的字符串替换为 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]
创建另一个包含 month 的 id 的列表]列表理解表达式。
这一行
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))
您可以使用 map
和 lambda
map(lambda month: month_ids.get(month), month_list)
添加这一行很有希望。
month_list = list(month_ids.values())
我有一个列表列表
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]
创建另一个包含 month 的 id 的列表]列表理解表达式。
这一行
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))
您可以使用 map
和 lambda
map(lambda month: month_ids.get(month), month_list)
添加这一行很有希望。
month_list = list(month_ids.values())