草庐IT

python - 仅查找几个字典的公共(public)键值对 : dict intersection

我在列表中有0个或多个dict:>>>dicts=[dict(a=3,b=89,d=2),dict(a=3,b=89,c=99),dict(a=3,b=42,c=33)]我想创建一个新字典,它只包含所有上述字典中的键,并且只有当值都相同时:>>>dict_intersection(*dicts){"a":3}我觉得应该有一种优雅的方式来编写dict_intersection,但我自己只是提出了不优雅和/或低效的解决方案。 最佳答案 >>>dict(set.intersection(*(set(d.iteritems())fordin

Python 计算 dict 值中的项目,它是一个列表

Python3.3,具有这种形式的键值对的字典。d={'T1':['eggs','bacon','sausage']}这些值是可变长度的列表,我需要遍历列表项。这有效:count=0forlind.values():foriinl:count+=1但是很丑。一定有更Pythonic的方式,但我似乎找不到。len(d.values())产生1。它是1个列表(DUH)。尝试使用来自here的计数器给出“无法散列的类型”错误。 最佳答案 使用sum()和每个字典值的长度:count=sum(len(v)forvind.itervalues

python - 使用dict的递归阶乘导致RecursionError

一个简单的递归阶乘方法非常有效:deffact(n):ifn==0:return1returnn*fact(n-1)但我想尝试一下,改用dict。从逻辑上讲,这应该可行,但是一堆打印语句告诉我n不是在0处停止,而是向下滑动负数,直到达到最大递归深度:defrecursive_fact(n):lookup={0:1}returnlookup.get(n,n*recursive_fact(n-1))这是为什么? 最佳答案 Python不会延迟计算参数。传递给dict.get调用的默认值也将在调用dict.get之前进行评估。因此,在您的

python - 在 pandas 数据框中设置列名 from_dict with orient = 'index'

我已经看过这个问题:pandascreatenamedcolumnsindataframefromdict.但是,我的示例略有不同。我有一本字典:my_dict={'key1':[1,2,3],'key2':[4,5,6],'key3':[7,8,9]}然后我创建了一个pandas数据框:df=pd.DataFrame.from_dict(my_dict,orient='index'),它是面向行的。但是,当编写columns=['one','two','three']时,出现错误,如上面的链接所示。如何命名它们? 最佳答案 有什么

Python:对这个字典进行排序(dict in dict)

d={'a':{'k':1,'b':'whatever'},'b':{'k':2,'b':'sortbyk'}}想在python中按k降序对这个字典进行排序。有点棘手,请帮忙。 最佳答案 dict是无序的。所以没有办法直接对它们进行排序,但是如果你是愿意将dict转换为(键,值)元组列表,那么你可以这样做:In[9]:dOut[9]:{'a':{'b':'whatever','k':1},'b':{'b':'sortbyk','k':2}}In[15]:sorted(d.items(),key=lambdax:x[1]['k'],r

python - `object in list` 的行为与 `object in dict` 不同?

我有一个包含一些对象的迭代器,我想创建一个uniqueUsers集合,在其中我只列出每个用户一次。所以玩了一下,我尝试了一个列表和一个字典:>>>forminms:printm.to_user#let'sfirstlookwhat'sinsidems...PeteKramerPeteKramerPeteKramer>>>>>>uniqueUsers=[]#Createanemptylist>>>forminms:...ifm.to_usernotinuniqueUsers:...uniqueUsers.append(m.to_user)...>>>uniqueUsers[PeteKra

python - 在 Python 中将有限的 dict 值解压缩为局部变量的优雅方法

我正在寻找一种优雅的方法来将Python字典中的一些值提取为本地值。与此等效的东西,但对于更长的值列表和更长的键/变量名称更清晰:d={'foo':1,'bar':2,'extra':3}foo,bar=d['foo'],d['bar']我原本希望得到类似下面的东西:foo,bar=d.get_tuple('foo','bar')我可以轻松编写一个不错的函数:defget_selected_values(d,*args):return[d[arg]forarginargs]foo,bar=get_selected_values(d,'foo','bar')但我一直暗暗怀疑还有其他一些内

python - 将 pandas DataFrame 制作成 dict 和 dropna

我有一些带有NaN的pandasDataFrame。像这样:importpandasaspdimportnumpyasnpraw_data={'A':{1:2,2:3,3:4},'B':{1:np.nan,2:44,3:np.nan}}data=pd.DataFrame(raw_data)>>>dataAB12NaN234434NaN现在我想用它做一个字典,同时删除NaN。结果应如下所示:{'A':{1:2,2:3,3:4},'B':{2:44.0}}但是使用pandasto_dict函数给我这样的结果:>>>data.to_dict(){'A':{1:2,2:3,3:4},'B':{

python - 在一个 dict 的 dict 中,你如何模拟 Perl 的自动激活行为?

这个问题在这里已经有了答案:Whatisthebestwaytoimplementnesteddictionaries?(21个回答)关闭7年前。Google和在线文档都没有对我的查询提供太多见解,所以我想我会在这里问社区。在Perl中,您可以轻松地设置一个哈希的哈希并像这样测试最终的key:my$hash={};$hash{"element1"}{"sub1"}{"subsub1"}="value1";if(exists($hash{"element1"}{"sub1"}{"subsub1"})){print"foundvalue\n";}Python中的“最佳实践”是什么?

python - Python timeit : Counter() vs defaultdict() vs dict() 的惊人结果

我用timeit获得了非常令人惊讶的结果,如果我做错了什么,有人能告诉我吗?我正在使用Python2.7。这是文件speedtest_init.py的内容:importrandomto_count=[random.randint(0,100)forrinrange(60)]这些是speedtest.py的内容:__author__='BlueTrin'importtimeitdeftest_init1():print(timeit.timeit('importspeedtest_init'))deftest_counter1():s="""\d=defaultdict(int);for