如何将相同的函数应用于字典数组中的每个值?

时间:2020-02-01 02:03:44

标签: python arrays python-3.x dictionary

我正在使用Python 3.7。我有一个字典数组,每个数组都有相同的键。例如

arr_of_dicts = ({"st" : "il"}, {"st" : "IL"}, {"st" : "Il"})

如何在每个字典中将相同的功能应用于某个键的值?例如,我想将大写功能应用于上面的值

arr_of_dicts = ({"st" : "IL"}, {"st" : "IL"}, {"st" : "IL"})

2 个答案:

答案 0 :(得分:2)

使用map(),可以使转换函数接受用于转换并返回lambda(用作映射方法)的键。通过使用先前传递的键(k)和传入的字典(d),您可以返回新字典,并将字典的值转换为大写:

arr_of_dicts = ({"st" : "il"}, {"st" : "IL"}, {"st" : "Il"})

upper = lambda k: lambda d: {k: d[k].upper()} # your func
res = map(upper('st'), arr_of_dicts) # mapping method

print(list(res))

结果:

[{'st': 'IL'}, {'st': 'IL'}, {'st': 'IL'}]

如果词典中还有其他键,则可以先将原始词典扩展到新词典中,然后使用大写版本覆盖要转换的键属性,如下所示:

arr_of_dicts = [{"a": 5, "st" : "il"}, {"a": 7, "st" : "IL"}, {"a": 8, "st" : "Il"}]

upper = lambda k: lambda d: {**d, k: d[k].upper()}
res = map(upper('st'), arr_of_dicts) # mapping method

print(list(res))

结果:

[{'a': 5, 'st': 'IL'}, {'a': 7, 'st': 'IL'}, {'a': 8, 'st': 'IL'}]

答案 1 :(得分:0)

您可能还喜欢熊猫。

如果您做很多类似的事情,则应检查pandas及其apply functionality。它可以使这些事情尽快完成:

df = df.apply(your_func)

这是一个非常强大的工具,如果您喜欢的话,有时您可以制作一些光滑且方便的单线。