作者mikapauli (cablin)
看板Python
标题Re: [问题] 如何将dict的values取set
时间Mon Feb 20 22:14:17 2012
※ 引述《kadodo (想办法突破)》之铭言:
: s=map(lambda x : set(x), target.values())
: print(reduce(lambda x,y: x.intersection(y), s))
: 以上这样OK 有PRINT出正确结果
: s=map(lambda x : set(x), target.values())
: var_a = reduce(lambda x,y: x.intersection(y), s)
: print(var_a)
: 换成以上三行,想用一个变数去接 就会得到以下错误
: var_a = reduce(lambda x,y: x.intersection(y), s)
: 错误讯息 : TypeError: reduce() of empty sequence with no initial value.
为此特地去下载3.2.2後我大概知道问题在那了..
你的写法应该是
s=map(lambda x : set(x), target.values())
print(reduce(lambda x,y: x.intersection(y), s))
var_a = reduce(lambda x,y: x.intersection(y), s)
在python3中map的return是iterator
iterator介面的特点是"只能用一次"
因此当你在第一个reduce用尽了s後
对第二个reduce而言s已经是空的iterator
所以会出现Error
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.217.2
1F:→ kadodo:的确就如你所说 不能用两次 我先存起来 再印出来是可以的 02/21 15:31