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

2024-10-01 00:23:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我把数据存储在一个文本文件中,格式如下

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

提前谢谢


Tags: 数据nonameininfoforvaluecounter
2条回答

Python字典只能将唯一值作为键保存。你试图给相同的键不同的值,这将覆盖它们。考虑使用不同的数据结构

就像dirkssenne所说的,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号,而不是国家名称),并且在打印时不考虑它

相关问题 更多 >