草庐IT

字典序法

全部标签

python - 在 Python 中有效地按键选择字典项目

假设我有一个字典,它的键是字符串。我如何才能有效地从仅包含某些列表中存在的键的字典中创建新字典?例如:#adictionarymappingstringstostuffmydict={'quux':...,'bar':...,'foo':...}#listofkeystobeselectedfrommydictkeys_to_select=['foo','bar',...]我想出的方法是:filtered_mydict=[mydict[k]forkinmydict.keys()\ifkinkeys_to_select]但我认为这是非常低效的,因为:(1)它需要使用keys()枚举键,(

python - 在 Python 中将来自两个不同字典的值相乘

我有两个单独的字典,其中包含我想相乘的键和值。这些值应该只乘以它们拥有的键。即dict1={'a':1,'b':2,'c':3}dict2={'a':15,'b':10,'d':17}dict3=dict.items()*dict.items()printdict3#####dict3shouldequal{'a':15,'b':20}如果有人能提供帮助,那就太好了。谢谢! 最佳答案 您可以使用dictcomprehension:>>>{k:v*dict2[k]fork,vindict1.items()ifkindict2}{'a'

python - 在 Python 中使用对象作为字典中的键 - 哈希函数

我正在尝试使用一个对象作为Python中字典的键值。我遵循其他一些帖子的建议,我们需要实现2个函数:__hash__和__eq__有了这个,我期待下面的工作,但它没有。classTest:def__init__(self,name):self.name=namedef__hash__(self):returnhash(str(self.name))def__eq__(self,other):returnstr(self.name)==str(other,name)defTestMethod():test_Dict={}obj=Test('abc')test_Dict[obj]=objp

python - 从 Pyspark 中的 RDD 中提取字典

这是一道作业题:我有一个RDD,它是元组集合。我还有从每个输入元组返回字典的函数。不知何故,与reduce函数相反。有了map,我可以很容易地从元组的RDD到字典的RDD。但是,由于字典是(key,value)对的集合,我想将字典的RDD转换为(key,value)元组的RDD每个字典的内容。那样的话,如果我的RDD包含10个元组,那么我会得到一个RDD包含10个字典和5个元素(例如),最后我得到一个RDD50个元组。我认为这一定是可能的,但是如何实现呢?(可能是我不知道这个操作英文怎么叫的问题) 最佳答案 我的2美分:有一个名为“

python - 返回字典中的最大值

这个问题在这里已经有了答案:UsingPython'smaxtoreturntwoequallylargevalues(6个答案)关闭5年前。我想从字典中返回最大值及其键,我知道像下面这样的东西应该可以解决问题max(list.iteritems(),key=operator.itemgetter(1))但是如果字典中的最大值是6并且碰巧多个键具有相同的值..它总是返回第一个!我怎样才能让它返回所有具有最大数量的键作为值以及值。这是具有相同最大值的字典示例:dic={0:1.4984074067880424,1:1.0984074067880423,2:1.89840740678804

python - 如何获得两个字典的对称差异

我一直在寻找一种解决方案来找出Python中两个字典之间的对称差异。例如,如果我有两个字典A和B,我想创建第三个字典C,其中包含A和B中在另一个字典中找不到的所有项目,或者换句话说,是唯一的。我找不到规范的答案,所以我决定打开这个问题并给出我自己的答案。如果您认为自己有更好的方法,我很乐意看到。一些数据:a={'a':1,'b':2}b={'b':2,'c':3}期望的输出:{'a':1,'c':3} 最佳答案 要获得两个字典之间的对称差异,请使用以下稳健函数:defdict_symmetric_difference(a,b):re

python - 有没有更快的方法从字典中获取多个键?

我有一本字典:d={'a':1,'b':2,'c':3,'d':4}然后我有一个键列表:l=['a','b','z']我想要的结果是:[1,2,None]到目前为止我正在做的是:[d.get(k)forkinl]有没有更快的方法?也许没有for? 最佳答案 你可以使用:>>>list(map(d.get,l))[1,2,None]它有两个优点:它只执行一次d.get查找——不是每次迭代OnlyCPython:因为dict.get是用C实现的,map是用C实现的,所以可以在函数调用中避开Python层(大致来说细节是有点复杂)。至于计

Python:在字典中组合 "if ' x' 和 "for i in dict[' x']"

真的有两个问题:如果我有一个字典(最初来自解析json消息),其中有一个可选数组:dict_with={'name':'bob','city':'sanfrancisco','kids':{'name':'alice'}}dict_without={'name':'bob','city':'sanfrancisco'}我通常会有这样的代码:if'kids'indict:forkindict['kids']:#dostuff我的第一个问题是有什么python方法可以结合if保护和for循环吗?第二个问题是我的直觉告诉我原始json消息的更好设计是始终指定kids元素,只是使用一个空字典:

python - 如何过滤具有给定键匹配值的字典列表

使用类似a=copyf(dictlist,key,valuelist)的接口(interface)。>>>dictlist=[{'first':'James','last':'Joule'},{'first':'James','last':'Watt'},{'first':'Christian','last':'Doppler'}]>>>valuelist=['James','John']>>>x=copyf(dictlist,'first',valuelist)>>>print(x)[{'first':'James','last':'Joule'},{'first':'James',

python - 在 frozenset 上使用元组作为字典的键是否有性能差异?

我有一个脚本,它使用由两个变量组成的键对字典进行多次调用。我知道我的程序将以相反的顺序再次遇到这两个变量,这使得将key存储为元组变得可行。(创建行和列具有相同标签的矩阵)因此,我想知道使用元组而不是卡住集作为字典键是否存在性能差异。 最佳答案 在快速测试中,显然差异可以忽略不计。python-mtimeit-s"keys=list(zip(range(10000),range(10,10000)))"-s"values=range(10000)"-s"a=dict(zip(keys,values))""foriinkeys:""_