我正在尝试编写更加pythonic或更简洁的方法,避免为循环编写太多。
基本上我有以下区块代码:
result = {}
for model_name in list_of_model_names:
model_fields = _do_something(model_name)
result['{}_fields'.format(model_name)] = model_fields
return result
本质上,我循环遍历字符串列表。每个字符串我将执行一些操作,以便该字符串的某些派生成为字典中的键和值对。
我正在阅读http://www.u.arizona.edu/~erdmann/mse350/topics/list_comprehensions.html
我知道:
我的代码正在运行,我想知道是否有更简洁或更pythonic的方式来遍历列表并让其循环变量影响字典的键和值。
答案 0 :(得分:2)
您可以更简洁地使用:
result = {(name+'_fields'): _do_something(name) for name in list_of_model_names}
是否更具可读性或有用性取决于你。
答案 1 :(得分:2)
通常情况下,更多Pythonic方式不是使用map
,filter
和reduce
,而是使用理解。
对于您的代码,那将是
result = {'{}_fields'.format(model_name): _do_something(model_name)
for model_name in list_of_model_names}
理解也适用于列表和集合。