dict.values() 没有提供 python 中的所有值

dict.values() doesn't provide all the values in python

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":

88
53
28
28
24
16
16
12
12
11
8
8
8
8
6
6
6
4
4
4
4
4
4
4
4
4
4
4
4
2
2
2
2
2

来自打印test_list:

list values:dict_values([16, 24, 2, 4, 53, 8, 88, 12, 6, 11, 28])

有没有办法将重复值也包含到列表中?

这一行:

test[value] = value

如果 test 是重复的,则不会向 test 添加新值,它只会覆盖旧值。所以任何重复项都会被删除。 values() 调用真正返回了字典中保留的所有内容。

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

样本测试可以

>>> {1:10}
{1: 10}
>>> {1:10,1:20}
{1: 20}

在这里你可以看到,重复的键被新值覆盖了

POST 评论编辑

正如您所说,您想要一个值列表,您可以在开头有一个语句 l = [] 并在 test[value] = value[=17= 的位置有 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))