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

时间:2015-01-19 16:51:32

标签: 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)

   test_list = test.values()
   print (str(test_list))

值和test_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])

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

3 个答案:

答案 0 :(得分:3)

这一行:

test[value] = value

如果它是重复的,则不向test添加新值,它只会覆盖旧值。因此删除任何重复项。 values()调用真正归还了字典中的所有内容。

答案 1 :(得分:1)

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

样本测试可以

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

在这里,您可以看到,重复的键被新值

覆盖

发表评论编辑

正如您所说,您想要一个值列表,您可以在开始时使用l = []语句,并在l.append(value)

的地方test[value] = value

答案 2 :(得分:1)

这是因为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))