将项添加到另一个字典的字典中

时间:2014-10-25 01:58:48

标签: python dictionary

我试图根据每个键的值将值从一个字典移动到另一个字典,这里是代码:

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 个答案:

答案 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