我有一个有数百万元素的字典,可以使用数百兆字节的内存。
我想根据键上的条件删除某些元素:
d = {k: k for k in range(10_000_000)} # simplified example
def mycondition(x):
return x % 10 != 0 # simplified
这样可以工作,但是它会执行一个新的dict副本,所以我想避免它:
D= {k: v表示k,v在d.items()中,如果我的条件(K)}
因为与“就位”解决方案相比,它将使用内存的双倍。
失败
基本上,我希望能够编写如下代码:
main = do
x <- newVal (2 :: Int)
y <- newVal (3 :: Int)
z <- newFunc (x, y) (\(a,b) -> a * b)
r1 <- readVal z
print r1 -- prints 6 (2 * 3)
setVal x 5
r2 <- readVal z
print r2 -- prints 15 (5 * 3)
有没有人可以从头开始或者从库中提供一些示例代码,让我可以实现上面提到的东西?
假设我有以下针对SQL DB的LINQPad查询(使用C#语句模式):
var query = (from te in Time_Entries
select new { te.Period, te.Company_Name }).FirstOrDefault();
如果我想要更新所选记录上的Period值,我会认为我可以这样做:
query.Period = 5;
SubmitChanges();
但不幸的是,我在query.Period赋值行上得到了一个错误:
Property or indexer 'AnonymousType#1.Period'