草庐IT

字典序法

全部标签

python - 如何根据列表中的部分键重新排列有序字典

我正在根据列表中的键重新排列一些有序字典。例如:old_OD=OrderedDict([('cat_1',1),('dog_1',2),('cat_2',3),('fish_1',4),('dog_2',5)])现在我有一个组的订单列表。order=['dog','cat','fish']然后将字典中的项目组合在一起得到结果,如下所示:new_OD=OrderedDict([('dog_1',2),('dog_2',5),('cat_1',1),('cat_2',3),('fish_1',4)])我发现了一些很好的相关问题HowtoreorderODbasedonlist和Re-ord

用于处理嵌套字典的 Python 递归 setattr() 类函数

这个问题在这里已经有了答案:Isitpossibletoindexnestedlistsusingtuplesinpython?(7个答案)关闭4个月前。有很多不错的类似getattr()的函数用于解析嵌套的字典结构,例如:FindingakeyrecursivelyinadictionarySupposeIhaveapythondictionary,manynestshttps://gist.github.com/mittenchops/5664038我想做一个并行的setattr()。本质上,给定:cmd='f[0].a'val='whatever'x={"a":"stuff"}我

c# - 像 Python 的 collections.Counter 库这样的 C# 库 -> 在 C# 中获取两个字典对象之间的值差异

这就是我在C#中创建字典的方式。Dictionaryd=newDictionary(){{"cheese",2},{"cakes",1},{"milk",0},{"humans",-1}//Thisone'sforlaughs};在Python中,如果你有这样的字典:fromcollectionsimportCountermy_first_dict={"cheese":1,"cakes":2,"milk":3,}my_second_dict={"cheese":0,"cakes":1,"milk":4,}printCounter(my_first_dict)-Counter(my_se

与常规字典相比,Python manager.dict() 非常慢

我有一个字典来存储对象:jobs={}job=Job()jobs[job.name]=job现在我想将它转换为使用managerdict,因为我想使用multiprocessing并且需要在monstprocesses中共享这个dictmgr=multiprocessing.Manager()jobs=mgr.dict()job=Job()jobs[job.name]=job只是通过转换为使用manager.dict()事情变得非常慢。例如,如果使用原生字典,创建625个对象并存储到字典中只需要0.65秒。同样的任务现在需要126秒!我可以做任何优化来使manager.dict()与p

python - 使用一个字典的内存使用量是两个字典所需内存量的一半吗?

假设我有2个Python字典,如下所示:d1={}d2={}d1[(i,j)]=10d2[(i,j)]=20相反,我可以这样做:d={}d[(i,j)]=(10,20)可以使用d[(i,j)][0]和d[(i,j)][1]访问它。我想问的是:第二个选项需要的内存是否比第一个少?如果是,是否是内存的一半?我需要在我正在编写的程序中使用非常大的词典,如果第二种解决方案更好,我会选择它。 最佳答案 在32位Python3.7.3repl的Windows10机器上测试了这个:这占用了155MB的内存:>>>d1={(i,j):10forii

python - 需要从平面字典创建分层字典

我有一个字典,看起来像这样:{'foo':{'opt1':1,'opt2':2,},'foo/bar':{'opt3':3,'opt4':4,},'foo/bar/baz':{'opt5':5,'opt6':6,}}我需要让它看起来像:{'foo':{'opt1':1,'opt2':2,'bar':{'opt3':3,'opt4':4,'baz':{'opt5':5,'opt6':6,}}}}我应该指出,可以并且将会有多个顶级键(在本例中为“foo”)。我可能可以把一些东西放在一起来获得我需要的东西,但我希望有一个更有效的解决方案。 最佳答案

python - 如何加载包含带有 unicode 字符的字典的 pickle 文件?

我有一本字典:mydict={'öö':1,'ää':2}我已经把它写到pickle文件中了:a=codecs.open(r'mydict.pkl','wb','utf-8')pickle.dump(mydict,a)如果我尝试加载它:m=codecs.open(r'mydict.pkl','rb','utf-8')mydict=pickle.load(m)我得到一个错误:KeyError:u"S'\\xe4\\xe4'\np1\nI2\nsS'\\xf6\\xf6'\np2\nI1\ns."有什么解决办法吗?非常感谢帮助。 最佳答案

python - 有没有一种 pythonic 方法来处理树结构的字典键?

我正在寻找一个pythonic习惯用法来将键和值列表转换为嵌套这些键的字典。例如:dtree(["a","b","c"])=42ordtree("a/b/c".split(sep='/'))=42将返回嵌套的字典:{"a":{"b":{"c":42}}}这可用于将一组具有分层键的值转换为树:dtree({"a/b/c":10,"a/b/d":20,"a/e":"foo","a/f":False,"g":30})wouldresultin:{"a":{"b":{"c":10,"d":20},"e":foo","f":False},"g":30}我可以编写一些FORTRANish代码来使用

python - 如何使用字典对 DataFrame 进行子集化?

比如说,我给出了一个DataFrame,其中大部分列都是分类数据。>data.head()agerisksexsmoking028nomaleno158nofemaleno227nomaleyes326nomaleno429yesfemaleyes我想通过这些分类变量的键值对字典对这些数据进行子集化。tmp={'risk':'no','smoking':'yes','sex':'female'}因此,我想要以下子集。data[(data.risk=='no')&(data.smoking=='yes')&(data.sex=='female')]我想做的是:data[tmp]执行此操作

python - 将包含值列表的字典转换为数据框

我花了一段时间查看SO,似乎我遇到了一个独特的问题。我有一个字典,如下所示:dict={123:[2,4],234:[6,8],...}我想将这个包含值列表的字典转换为如下所示的3列数据框:time,value1,value2123,2,4234,6,8...我可以跑:pandas.DataFrame(dict)但这会生成以下内容:123,234,...2,6,...4,8,...可能是一个简单的修复,但我仍在挑选Pandas 最佳答案 您可以按照levi的建议对数据进行预处理,也可以在创建数据框后对其进行转置。testdict={