python字典用法

adonis2222 2008-11-08 02:22:18
假设有如下2个字典,cal(d1,d2)计算出2个字典的绝对差值,比如如下,abs(0.5-02) + abs(0.2-0.8) + abs(0.3-0) = 1.2
d1 = {'cat':0.5,'dog':0.2,'egg':0.3}
d2 = {'cat':0.2,'dog':0.8,'egg':0}
cal(d1,d2)
...全文
1367 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
boyz2men 2008-11-12
  • 打赏
  • 举报
回复
这里是简单了点 key值相同的hash值也该相同吧 出来的顺序是否一样的确要实践一下。

实际要保险的话 diff(zip 这里取d1.item 可以采用转换key值成列名 对齐到arrary 就没有 顺序问题了。不过楼主没有回应就懒得往下想了。
zzg315 2008-11-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 boyz2men 的回复:]
sum(map(abs,diff(zip(d1.values(),d2.values()))))

numpy
[/Quote]

这个做法是不可取的。这里的d1、d2都是map,map的是hash方式存储的,其顺序不是象list那样所见的,如果之前的d1或者d2更复杂一点,d1.values(),d2.values()是不可靠的。



flyinglab 2008-11-11
  • 打赏
  • 举报
回复
def cal(d1,d2):
return sum(abs(d1[k]-d2[k]) for k in d1)
# 当然,前提是两个字典有一致的关键字.
# 1楼的做法个人认为欠妥,字典的keys,items,values是没有顺序保证的.
shimenshan 2008-11-11
  • 打赏
  • 举报
回复
diff是什么函数???
boyz2men 2008-11-10
  • 打赏
  • 举报
回复
sum(map(abs,diff

如果知道统计学上这个做法叫什么这段就都是多余的。np里应该有对应函数
DDGG 2008-11-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 boyz2men 的回复:]
sum(map(abs,diff(zip(d1.values(),d2.values()))))

numpy
[/Quote]

没有找到diff,是numpy模块里的?
cccbuiler 2008-11-09
  • 打赏
  • 举报
回复
看来,python中还有很多值得挖掘的东西啊。语言的表达能力太强大了。
[Quote=引用 1 楼 boyz2men 的回复:]
sum(map(abs,diff(zip(d1.values(),d2.values()))))

numpy
[/Quote]
jimmy_kuu 2008-11-09
  • 打赏
  • 举报
回复
def cal(d1, d2):
temp = 0
for k in d1.keys():
temp += abs(d1[k] - d2[k])
return temp
anDonEprimer 2008-11-09
  • 打赏
  • 举报
回复
很好,很强大!
boyz2men 2008-11-08
  • 打赏
  • 举报
回复
sum(map(abs,diff(zip(d1.values(),d2.values()))))

numpy

37,743

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧