我需要一个用于字典的python 3.1深度更新函数(一个递归更新父字典内的子字典的函数).
但我认为,在将来,我的函数可能必须处理行为像字典但不是字典的对象.而且我想避免使用isinstance和type(因为它们被认为是坏的,因为我几乎可以阅读每个Pythonista的博客).
但鸭子打字是Python的哲学的一部分,所以我怎么能检查对象是否像字典一样?
谢谢!
编辑:谢谢大家的答案.以防万一,我编码的函数可以在这个地方找到:http://blog.cafeaumiel.com/public/python/dict_deep_update.py
我假设这是一件容易的事情,但我无法解决我的问题。
我有一个包含 9 列的数据框,我想为第一列中给出的每个组排序第 4 列 (LumenLenght) 的最高 3 个值。
我希望能够:a)找到为每个 SampleID(第一列)分隔的第 4 列具有最高值的 10 行 b)平均每个 SampleID 的 10 个值

我当前的代码 a) 首先根据 SampleID 和 LumenLength 对值进行排序,b) 将每个 SampleID 的最高、第二高和第三高的 LumenLength 值分开。
sorted.v= arrange(sorted.v, desc(SampleId), LumenLength)
maxlength1 = aggregate(sorted.v$LumenLength,by = list(sorted.v$SampleId), FUN = tail, n = 1)#highest value
maxlength2 = aggregate(sorted.v$LumenLength,by = list(sorted.v$SampleId), FUN = tail, n = 2)#second highest value
maxlength3 = aggregate(sorted.v$LumenLength,by = list(sorted.v$SampleId), FUN = tail, n = 3)#3. highest value
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我还没有真正达到我的目标。我也很确定有更好的方法来做到这一点,但我现在卡住了。
我一定漏掉了一些东西,但是根据我找到的所有教程,这就是使用expressand passport+对节点应用程序进行基本身份验证的方式passport-local。我知道这不符合最佳实践,我只是想让 POC 运行:
'use strict'
var express = require('express');
var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy
var app = express();
var users = { 'user': 'secretpass'};
passport.use(new LocalStrategy(
function(username, password, done) {
console.log('Username:', username, 'password:', password);
if (!users[username] || users[username] != password) {
console.log('Username:', username, 'password:', password);
return done (null, false);
}
return done(null, {username: username});
}
));
app.use(passport.initialize());
app.get('/', function (req, res) {
res.send ('GET request to root');
});
app.post('/', function (req, …Run Code Online (Sandbox Code Playgroud) aggregate ×1
dictionary ×1
duck-typing ×1
express ×1
javascript ×1
node.js ×1
passport.js ×1
python ×1
r ×1
sorting ×1