列表理解,但对于字典?
List comprehension, but for dictionaries?
更 pythonic 的方式来执行以下操作?在这个例子中,我试图将评论(字典)构建为键值对,其中键是未修改的版本,值是来自函数的 return 值,其中键被传递为一个参数。
def func(word):
return word[-1:-6:-1].upper()
subs = {
'ALLOWED': ['one', 'two'],
'DISALLOWED': ['three', 'four']
}
comments = {}
for sub in subs['ALLOWED']:
# reverse and uppercase
comments[sub] = func(sub)
print(comments)
有人推荐吗?完成这项工作并不完全重要,但我喜欢学习 python 习语和使我的代码更 pythonic 的方法。谢谢!
使用 dict comprehension 而不是在 for
循环中构建字典:
comments = {key: func(key) for key in subs['ALLOWED']}
删除循环并在函数内部用字典理解替换它。然后,你可以简单地return它。
此外,您可以使用 [::-1]
反转字符串 word
,而不是您正在使用的复杂 [-1:-6:-1]
切片:
def func(words):
return {word: word[::-1].upper() for word in words}
这会产生同样的结果:
comments = func(subs['ALLOWED'])
print(comments)
# {'two': 'OWT', 'one': 'ENO'}
更 pythonic 的方式来执行以下操作?在这个例子中,我试图将评论(字典)构建为键值对,其中键是未修改的版本,值是来自函数的 return 值,其中键被传递为一个参数。
def func(word):
return word[-1:-6:-1].upper()
subs = {
'ALLOWED': ['one', 'two'],
'DISALLOWED': ['three', 'four']
}
comments = {}
for sub in subs['ALLOWED']:
# reverse and uppercase
comments[sub] = func(sub)
print(comments)
有人推荐吗?完成这项工作并不完全重要,但我喜欢学习 python 习语和使我的代码更 pythonic 的方法。谢谢!
使用 dict comprehension 而不是在 for
循环中构建字典:
comments = {key: func(key) for key in subs['ALLOWED']}
删除循环并在函数内部用字典理解替换它。然后,你可以简单地return它。
此外,您可以使用 [::-1]
反转字符串 word
,而不是您正在使用的复杂 [-1:-6:-1]
切片:
def func(words):
return {word: word[::-1].upper() for word in words}
这会产生同样的结果:
comments = func(subs['ALLOWED'])
print(comments)
# {'two': 'OWT', 'one': 'ENO'}