小编Nat*_*vis的帖子

计算两个Python词典中包含的键的差异

假设我有两个Python词典 - dictAdictB.我需要找出是否有任何键存在dictB但不存在dictA.最快的方法是什么?

我应该将字典键转换成一组然后再去吗?

有兴趣了解你的想法......


谢谢你的回复.

抱歉没有正确陈述我的问题.我的情况是这样的 - 我有一个dictA可以相同dictB或者可能有一些键缺失,dictB或者某些键的值可能不同,必须设置为dictA键的值.

问题是字典没有标准,并且可以具有可以作为dict字典的值.

dictA={'key1':a, 'key2':b, 'key3':{'key11':cc, 'key12':dd}, 'key4':{'key111':{....}}}
dictB={'key1':a, 'key2:':newb, 'key3':{'key11':cc, 'key12':newdd, 'key13':ee}.......
Run Code Online (Sandbox Code Playgroud)

因此'key2'值必须重置为新值,并且必须在dict中添加'key13'.键值没有固定格式.它可以是一个简单的价值,也可以是dict的dict或dict.

python dictionary

166
推荐指数
8
解决办法
15万
查看次数

在Swift中创建水平滚动集合视图

如何轻松地创建一个水平滚动集合视图,填充单元格跨越行而不是列向下?

我希望有5列和3行,但当有超过15项时,我希望它滚动到下一页.
这件事我有很多麻烦.

horizontal-scrolling ios uicollectionview uicollectionviewcell swift

10
推荐指数
2
解决办法
4万
查看次数

GROUP BY和地图矢量聚合 - Clojure

我的数据看起来像这样

(def a [{:firmAccount "MSFT" :Val 10  :PE 3 }  
        {:firmAccount "MSFT" :Val 15  :PE 4} 
        {:firmAccount "GOG" :Val 15 :PE 3} 
        {:firmAccount "YAH" :Val 8 :PE 1}])
Run Code Online (Sandbox Code Playgroud)

我想分组:firmAccount,然后将每个公司账户的:和Val和:PE相加,得到类似的结果

 [{:firmAccount "MSFT" :Val 25 :PE 7}
  {:firmAccount "GOG" :Val 15 :PE 3}    
  {:FirmAccount "YAH" :Val 8 :PE 1}]
Run Code Online (Sandbox Code Playgroud)

这真是一件微不足道的事情,在SQL中我甚至不会三思而后行,但是因为我正在学习clojure,请耐心等待

clojure

9
推荐指数
2
解决办法
2128
查看次数

在C#中别名多个类

我想(我想)让我的代码更具可读性.我一直在使用以下类别名.

using Histogram = EmpiricScore<int>;
using FeatureHistogram = Dictionary<string, EmpiricScore<int>>;
Run Code Online (Sandbox Code Playgroud)

但我认为(注意:我试图FeatureHistogramHistogram这里来描述,而不是EmpiricScore<int>>):

using Histogram = EmpiricScore<int>;
using FeatureHistogram = Dictionary<string, Histogram>;
Run Code Online (Sandbox Code Playgroud)

似乎更具可读性(依赖关系可以更深入,如果我创建一个Hierarchical特征直方图怎么办),并且更容易重新分解(如果我碰巧决定名称直方图是不幸的).但编译器不会这样做.为什么?有什么方法可以绕过这个?

创建新类似乎有点矫枉过正......

c# alias templates

9
推荐指数
1
解决办法
234
查看次数

Python输入清理

我需要做一些非常快速的脏输入消毒,我想基本上将所有转换<, >&lt;, &gt;.

我希望得到相同的结果,'<script></script>'.replace('<', '&lt;').replace('>', '&gt;')而不必多次迭代字符串.我知道maketransstr.translate(即http://www.tutorialspoint.com/python/string_translate.htm)相关但这仅从1个char转换为另一个char.换句话说,人们做不到这样的事情:

inList = '<>'
outList = ['&lt;', '&gt;']
transform = maketrans(inList, outList)
Run Code Online (Sandbox Code Playgroud)

是否有builtin可以在单次迭代中执行此转换的函数?

我想使用builtin功能而不是外部模块.我已经知道了Bleach.

python forms validation sanitization input

8
推荐指数
2
解决办法
1万
查看次数

Clojure环中间件来处理url数组

ClojureScript cljs-ajax客户端库转换{:b [1 2]}b[0]=1&b[1]=2

例如:

(http/get "http://example.com" {:b [1 2]})
Run Code Online (Sandbox Code Playgroud)

导致请求:

"http://example.com?b[0]=1&b[1]=2"
Run Code Online (Sandbox Code Playgroud)

如何在服务器端设置我的环中间件来处理这种格式?我想将其转换回原始结构:

{:b [1 2]}
Run Code Online (Sandbox Code Playgroud)

我正在使用下面的中间件,但它无法正常工作:

(ring.middleware.keyword-params/wrap-keyword-params)
(ring.middleware.params/wrap-params :encoding encoding)
(ring.middleware.nested-params/wrap-nested-params)
Run Code Online (Sandbox Code Playgroud)

clojure ring

7
推荐指数
1
解决办法
167
查看次数

为什么此 Python 代码比其等效的 Clojure 代码更快

有人告诉我,并且我相信 Clojure 比 Python 更快。为什么这个 Python 代码比这个看似等效的 Clojure 代码运行得更快?Python 在编译时是否做了一些优化?

\n
def find_fifty(n,memory=1,count=0):\n    if memory < 0.5:\n        return count\n    else:\n        return find_fifty(n,memory*(1 - count/n),count+1)\n\nfind_fifty(100000)\xe2\x80\x8a\n
Run Code Online (Sandbox Code Playgroud)\n
(defn fifty \n    ([n] (fifty n 1 0))\n    ([n memory count]\n        (if (< memory 0.5)\n            count\n            (recur n\n                   (* memory (- 1 (/ count n)))\n                   (inc count)))))\n\n(fifty 100000)\n
Run Code Online (Sandbox Code Playgroud)\n

感觉 Clojure 的时间复杂度比 Python 高。Python函数可以接收比Clojure函数高很多倍的输入,才在运行时上有显着的提升。

\n

更新 - Clojure 修复

\n
(defn fifty \n    ([n] (fifty (float n) 1 0))\n    ([n memory count]\n        (if (< memory …
Run Code Online (Sandbox Code Playgroud)

python optimization runtime clojure

6
推荐指数
1
解决办法
346
查看次数

Haskell类型的族错误

很抱歉打扰你这个简单的问题.我正在尝试学习类型系列扩展的工作原理.当我愚弄它时,我遇到了一个错误,我无法弄清楚为什么.

class Foo a b c where
    data T a b c :: *

    f :: a -> T a b c

    g :: T a b c -> b

    h :: c -> a -> b
    h c a = g $ f a
Run Code Online (Sandbox Code Playgroud)

错误信息:

    Could not deduce (Foo a b c0) arising from a use of ‘g’
from the context (Foo a b c)
  bound by the class declaration for ‘Foo’
  at DB/Internal/Typecast.hs:(17,1)-(25,19)
The type variable ‘c0’ is …
Run Code Online (Sandbox Code Playgroud)

haskell

5
推荐指数
1
解决办法
89
查看次数

我可以在 python 交互模式下有多个 matplotlib 绘图窗口吗?

我已经使用 Matlab/octave 很长时间了,我正在过渡到 NumPy/SciPy。我发现matplotlib与Matlab中的图形绘制非常相似,并且易于使用。

但是,我对 matplotlib 感到不舒服的一件事是,当我使用 绘制图形时plt.show(),过程会卡在那里,因此我无法键入任何新命令,也无法在关闭该窗口之前启动另一个窗口来绘制另一个图形。例如,如果我们键入以下代码,则在关闭此窗口之前,我们不能键入任何新命令,也不能为另一个绘图启动另一个窗口。

import matplotlib.pyplot as plt
plt.plot([1,2,3,4])
plt.ylabel('some numbers')
plt.show()
Run Code Online (Sandbox Code Playgroud)

这种行为与 Matlab 绘图非常不同。在 Matlab 交互模式下,我们可能有多个图形窗口。

我们可以在python交互模式下做同样的事情吗?

python matlab plot numpy matplotlib

5
推荐指数
1
解决办法
2037
查看次数

在 Common Lisp 中定义和使用变量中的函数

我偶然发现了这个文章,解释在Y Combinator的。代码在 Scheme 中,但我正在尝试使用 Common Lisp 来解决它。

但是,我在将 Scheme 转换为 Common Lisp 时遇到了麻烦。Scheme 为函数和(其他)变量使用单一命名空间,但 Common Lisp 为函数和变量使用不同的命名空间。我怎样才能解决这个差异,以获得工作的 Common Lisp 代码?

方案代码

这是教程中的一些 Scheme 代码。

一开始作者定义了阶乘函数:

(define (factorial n)
  if (= n 0)
    1
    (* n (factorial (- n 1)))))
Run Code Online (Sandbox Code Playgroud)

并将其翻译成这样:

(define factorial
  (lambda (n)
    (if (= n 0)
      1
      (* n (factorial (- n 1))))))
Run Code Online (Sandbox Code Playgroud)

因为(根据作者的说法)这就是 Scheme 所做的:

Scheme 在评估它之前简单地将第一个定义转换为第二个定义。所以 Scheme 中的所有函数都是真正的 lambda 表达式。

通用 Lisp

我尝试在 Common Lisp 中重写上述两个片段,以模仿从第一种形式到第二种形式的转换。但是defineCL 中没有,也没有单个名称空间。所以我试图欺骗我的方式。

在 Common Lisp 中重写第一个 Scheme …

lambda scheme common-lisp

5
推荐指数
1
解决办法
1501
查看次数