我试图根据每个键的值将值从一个字典移动到另一个字典,这里是代码:
dict = {'a':1,'b':2,'c':0,'d':0,'e':0}
dict2 = {}
for c in dict:
if dict.values() > 1:
dict2.update(c)
我收到了错误:
TypeError: unorderable types: dict_values() > int()
有什么想法吗?
感谢。
答案 0 :(得分:1)
这里的问题是dict.values()
返回一个iterable,你无法将它与int进行比较。相反,迭代字典并将每个项目的值与数字进行比较。如果符合您的条件,则在新词典中设置键/值对
dict = {'a':1,'b':2,'c':0,'d':0,'e':0}
dict2 = {}
for key, value in dict.iteritems(): #use .items() if you use Python 3
if value > 1:
dict2[key]= value
dict.iteritems()
(对Python3使用dict.items()
)将返回键和值作为iterables。
dict[key] = value
会将value
添加到带有key
此外,dict
默认情况下在Python中表示(it's a class),因此将其用作变量名称并不是一个好主意。与某些语言不同,它会让你将它用作变量名,但它会阻止你调用dict类。
答案 1 :(得分:0)
mydict.values()
指的是整个列表(在python2.x中)和python3.x中的可迭代:
[1, 2, 0, 0, 0] # in python2.x
因此询问该列表或可迭代是否大于1是没有意义的。
你想要的是:
for k, v in mydict.items():
if v > 1:
mydict2[k] = v
使用dict作为dict类型对象的名称不是一个好主意。它发生了冲突。 使用list作为列表对象的名称等同样如此。
答案 2 :(得分:-1)
试试这个:
for k,v in dict.items():
if v>1:
dict2[k]=v