复制的提取数据不打印两次(Python)

时间:2018-11-02 21:48:31

标签: python python-3.x

我将数据存储在文本文件中,格式如下所示

counter name,coins weight,coins value,inputs corrrect
Jim,120,$1,Yes
Dwight,82,$1,No
Jim,130,$0.10,No
Dwight,82,$1,No

我使用以下代码提取和打印数据

info = {}
with open('CoinCount.txt') as input_file:
    for line in input_file:
        countername, coinsweight, coinsvalue, inputscorrect = (
            item.strip() for item in line.split(',', 3))
        info[countername] = dict(zip(('coinsweight', 'coinsvalue', 'inputscorrect'),
                                (coinsweight, coinsvalue, inputscorrect)))

print('info:')
for countername, record in info.items():
    print('  Counter Name %r:' % countername)
    for field, value in record.items():
        print('    %s: %s' % (field, value))

但是此代码不会打印我想做的重复条目。如果有人知道如何包括重复项,将不胜感激。

预期产量

Counter Name 'Jim':
coinsweight: 120
coinsvalue: $1
inputscorrect: Yes
Counter Name 'Dwight':
coinsweight: 82
coinsvalue: $1
inputscorrect: No
Counter Name 'Jim':
coinsweight: 130
coinsvalue: $0.10
inputscorrect: No
Counter Name 'Dwight':
coinsweight: 82
coinsvalue: $1
inputscorrect: No

累计产量

Counter Name 'Jim':
coinsweight: 130
coinsvalue: $0.10
inputscorrect: No
Counter Name 'Dwight':
coinsweight: 82
coinsvalue: $1
inputscorrect: No

预先感谢

2 个答案:

答案 0 :(得分:0)

就像Dirks Senne所说的那样,Python字典是一个只能保存唯一值的数据结构。因此,如果将新值分配给相同的键(只能是字符串),则将新值覆盖旧值。 例如:

countries = {"USA": "America", "France": "Europe"}
print(countries)

countries["USA"] = "Europe"
print(countries)

结果

#Before the assignment
{'USA': 'America', 'France': 'Europe'}
#After the assignment
{'USA': 'Europe', 'France': 'Europe'}

保存重复项的可能方法

如果要保留重复项,则可以创建一个元素列表,其中每个元素都是不同的词典或使用不同的键(如和ID号,而不是国家/地区名称),并且在打印时不考虑它。

答案 1 :(得分:-1)

Python词典只能保存唯一值作为键。您试图为相同的键提供不同的值,这将覆盖它们。考虑使用其他数据结构。