python - 附加到 python 字典

标签 python dictionary

我有一个包含整数和 float 的 csv 文件,

"5",7.30124705657363,2,12,7.45176205440562
"18",6.83169608190656,5,11,7.18118108407457
"20",6.40446470770985,4,10,6.70549470337383
"3",5.37498781178147,17,9,5.9902122724706
"10",5.12954203598201,8,8,5.58108702947798
"9",3.93496153596789,7,7,4.35751055597501

我正在做一些算术运算,然后尝试将它们添加到字典中,但我遇到了关键错误。这是我的代码,

global oldPriceCompRankDict
oldPriceCompRankDict = {}

def increaseQuantityByOne(self, fileLocation):
    rows = csv.reader(open(fileLocation))
    rows.next()
    print "PricePercentage\t" + "OldQuantity\t" + "newQuantity\t" + "oldCompScore\t" + "newCompScore"
    for row in rows:
        newQuantity = float(row[2]) + 1.0
        newCompetitiveScore = float(row[1]) + float(math.log(float(newQuantity), 100))
        print row[1] + "\t", str(row[2])+"\t", str(newQuantity) + "\t", str(row[4]) + "\t", newCompetitiveScore
        oldPriceCompRankDict[row[3]].append(row[4])

我有未排序的 key ,我不认为 key 必须是有序的格式。我认为任何事情都可能是关键。

最佳答案

无需输入 global 关键字,这是一个空操作。 使用defaultdict相反:

from collections import defaultdict

oldPriceCompRankDict = defaultdict(list)

发生的事情是您从未为 oldPriceCompRankDict 定义任何键,您只是希望它们默认为列表。 defaultdict 类型为您提供了一个可以做到这一点的字典;当在 oldPriceCompRankDict 中还没有找到一个键时,一个新的 list() 实例将被用作起始值而不是引发 KeyError。

关于python - 附加到 python 字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11087683/

相关文章:

c# - 将 IEnumerable 转换为字典以提高性能?

c# - 创建包含 List<int> 的字典条目

Python 分析方法

python - 我可以在 OS X 上使用 Numba 吗?

python - pyinstaller,导入错误: no module named pywintypes

java - 重构建议: maps to POJOs

c# - 带元组键的不区分大小写的字典

python - 如何将字典的特定属性设置为 []

python - 计算学习算法的 yScore

python - pytorch PIP和CONDA错误?