从另一个字典向字典添加项目

0 投票
3 回答
1870 浏览
提问于 2025-04-29 13:59

我正在尝试根据每个键的值,把一个字典中的值移动到另一个字典里,下面是我的代码:

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中是有特定含义的,默认情况下它是一个类(字典类),所以最好不要把它用作变量名。虽然某些语言允许你这样做,但这样会让你无法调用字典类。

撰写回答