作者kadodo (想办法突破)
看板Python
标题Re: [问题] 如何将dict的values取set
时间Mon Feb 20 23:03:37 2012
再请教一下 如果我写法并没有先print出来 而是直接先存到var_a, 之後再印出来:
s=map(lambda x : set(x), target.values())
var_a = reduce(lambda x,y: x.intersection(y), s)
print(var_a)
这样好像也是会有 TypeError
所以我不晓得我应该怎样才可以用一个变数把它存起来
谢谢
※ 引述《mikapauli (cablin)》之铭言:
: ※ 引述《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: 220.132.36.238