dict.values()不';t提供python中的所有值

dict.values()不';t提供python中的所有值,python,python-2.7,dictionary,Python,Python 2.7,Dictionary,dict.values()不提供在for循环中检索到的所有值。我使用for循环从文本文件中检索值 test = {} with open(input_file, "r") as test: for line in test: value = line.split()[5] value = int(value) test[value] = value print (value)

dict.values()不提供在for循环中检索到的所有值。我使用for循环从文本文件中检索值

    test = {}

    with open(input_file, "r") as test:
        for line in test:
           value = line.split()[5]
           value = int(value)
           test[value] = value
           print (value)

   test_list = test.values()
   print (str(test_list))
值和测试值包含的数据数不相等

输出如下:

从打印“值”开始:

从打印测试列表:

有没有办法将重复值也包括在列表中?

这一行:

test[value] = value
不将新值添加到
test
如果它是重复的,它只会覆盖旧值。因此,任何重复项都会被删除。
values()
调用将真正返回保留在dict中的所有内容。

此行:

test[value] = value
不将新值添加到
test
如果它是重复的,它只会覆盖旧值。因此,任何重复项都会被删除。
values()
调用将真正返回保留在dict中的所有内容。

键不能包含重复项。当您执行
test[value]=value
时,键
value
处的旧值将被覆盖。因此,只能得到有限的一组值

可以进行样本测试

>>> {1:10}
{1: 10}
>>> {1:10,1:20}
{1: 20}
在这里您可以看到,复制键被新值覆盖

评论后编辑

正如您所说,您需要一个值列表,您可以在开始处有一个语句
l=[]
,在
test[value]=value
键不能包含重复项的地方有
l.append(value)
。当您执行
test[value]=value
时,键
value
处的旧值将被覆盖。因此,只能得到有限的一组值

可以进行样本测试

>>> {1:10}
{1: 10}
>>> {1:10,1:20}
{1: 20}
在这里您可以看到,复制键被新值覆盖

评论后编辑


正如您所说的,您需要一个值列表,您可以在开始处有一个语句
l=[]
,在您有
test[value]=value

的地方有
l.append(value)
,这是因为python字典不能有重复的值。每次运行
test[value]=value
,它都会替换现有的值,或者在字典中还没有的情况下添加该值

例如:

>>> d = {}
>>> d['a'] = 'b'
>>> d
{'a': 'b'}

>>> d['a'] = 'c'
>>> d
{'a': 'c'}
我建议将此列为一个列表,如:

output = []

with open(input_file, "r") as test:
    for line in test:
       value = line.split()[5]
       value = int(value)
       output.append(value)
       print (value)

print (str(output))

这是因为python字典不能有重复的值。每次运行
test[value]=value
,它都会替换现有的值,或者在字典中还没有的情况下添加该值

例如:

>>> d = {}
>>> d['a'] = 'b'
>>> d
{'a': 'b'}

>>> d['a'] = 'c'
>>> d
{'a': 'c'}
我建议将此列为一个列表,如:

output = []

with open(input_file, "r") as test:
    for line in test:
       value = line.split()[5]
       value = int(value)
       output.append(value)
       print (value)

print (str(output))


如何获取包括重复项在内的值。因为我需要把所有的值都输入到dictionary@user3703782似乎您需要一个
列表
,而不是
目录
。也许你可以编辑这个问题,告诉我们更多你想要完成的总体目标?我如何获得包括重复项在内的值。因为我需要把所有的值都输入到dictionary@user3703782似乎您需要一个
列表
,而不是
目录
。也许你可以编辑这个问题来告诉我们更多你想要完成的事情?有没有办法将包含重复项的值放入一个列表?但是当我这样做时,我得到一个错误AttributeError:'dict'对象没有属性'append'是的,我做了
output=[]输出。append(int(value))print(“列表值:“+str(output))
我是这样做的,但是我遇到了我提到的错误。我试着按照你说的删除错误。很好!非常感谢:)有没有办法将包含重复项的值放入列表中?但当我这样做时,会得到一个错误AttributeError:“dict”对象没有属性“append”是的,我做了
output=[]输出。append(int(value))print(“列表值:+str(output))
我是这样做的,但是我遇到了我提到的错误。我试着按照你说的删除错误。很好!非常感谢:)您是否意识到您正在使用名称
test
来处理两种不同的事情?我希望这是您的真实代码中的一个转录错误。您是否意识到您使用的名称是
test
,用于两种不同的事情?我希望这是您真实代码中的转录错误。但是我得到了一个错误AttributeError:“dict”对象没有属性“append”您是否将第一行设置为
output=[]
?是的,我设置了
output=[]output.append(int(value))print(“列表值:“+str(output))
AttributeError:“dict”对象没有属性“append”
意味着
output
仍然是一个dict。您正在将它设置为字典。您没有将open(input_file,“r”)作为输出执行
,对吗?这应该仍然是
test
。没错,还有另一个参数是
page\u name={}
,我把它改为
page\u name=[]
现在一切都好了。谢谢,但我得到一个错误AttributeError:“dict”对象没有属性“append”您是否将第一行设置为
output=[]
?是的,我设置了
output=[]output.append(int(value))print(“列表值:”+str(output))
AttributeError:“dict”对象没有属性“append”
意味着
output
仍然是一个dict。您正在将它设置为字典。您没有将open(input_file,“r”)作为输出执行
,对吗?这应该仍然是
test
。没错,还有另一个参数是
page\u name={}
,我把它改为
page\u name=[]
现在一切都好了。谢谢