从另一个字典向字典添加项目
我正在尝试根据每个键的值,把一个字典中的值移动到另一个字典里,下面是我的代码:
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()
有没有什么建议?
谢谢。
3 个回答
-1
试试这个:
for k,v in dict.items():
if v>1:
dict2[k]=v
0
mydict.values()
在 Python 2.x 中指的是一个完整的列表,而在 Python 3.x 中则是一个可迭代的对象。在你的例子中:
[1, 2, 0, 0, 0] # in python2.x
所以问这个列表或可迭代对象是否大于 1 是没有意义的。
你想要的应该是类似这样的:
for k, v in mydict.items():
if v > 1:
mydict2[k] = v
把 dict 用作字典对象的名称并不是个好主意,因为它会产生冲突。使用 list 作为列表对象的名称也是一样的道理。
2
这里的问题是,dict.values()
返回的是一个可迭代的对象,而你不能直接把它和一个整数进行比较。正确的做法是遍历字典,逐个比较每个项的值和一个数字。如果符合你的条件,就把这个键值对放到一个新的字典里。
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()
)会同时返回键和值,都是可迭代的。
dict[key] = value
这行代码会把 value
添加到字典中,并且用你指定的 key
来标识它。
另外,dict
在Python中是有特定含义的,默认情况下它是一个类(字典类),所以最好不要把它用作变量名。虽然某些语言允许你这样做,但这样会让你无法调用字典类。