【发布时间】:2015-06-23 20:58:56
【问题描述】:
我有一个输入字典,我想将键与另一个字典进行比较,如果查找字典中的键被命中,我希望它运行一个函数作为查找字典中的值。
查找字典中的函数将返回一个需要“更新”到新字典中的键值对。所以这里是一个例子:
out = {getattr(self,self.LOOKUPDICT[k])({k:query[k]}) for k in query.keys() if k not in self.exclusions}
结果
getattr(self,self.LOOKUPDICT[k])({k:query[k]})
是一个看起来像这样的字典:
{'new_key':'new_val'}
在理解中我得到了
TypeError: unhashable type: 'dict'
因为它需要一个键值对。
现在我可以只运行一个常规循环和一个 if 语句,但我对这些有点反感。这里有什么解决方法吗?
TLDR: 字典推导,如何插入这样的字典:
{{'k':'v'} for k in blahblah}
并将 k 设为键,将 v 设为值。请注意,dict 是从在表达式中运行的函数返回的。
【问题讨论】:
-
你有一个set理解;你只有一个表达式,没有键值对。什么表达式产生键,什么产生值?
标签: python-3.x dictionary dictionary-comprehension