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])
有没有办法将重复值包括在列表中?
答案 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))