检查字典中的浮点值以了解 Python 中的条件

Posted

技术标签:

【中文标题】检查字典中的浮点值以了解 Python 中的条件【英文标题】:Check float value in dictionary for conditions in Python 【发布时间】:2015-02-01 21:34:05 【问题描述】:

我有一个如图所示的字典,我想知道我应该如何编写代码来检查每个键的每个值,并检查它们是否满足特定条件,例如高于 8 的值等。

http://i.imgur.com/qtfkK61.png

值是浮点数,每个区域的字典值有多个值。

def main(): #defining main function
    magList = [] #magnitude list of all together
    regionList = [] #creating list to hold region names
    wholeList = []
    combinedList = []

    with open("earthquakes.txt", "r") as eqList: #opens earthquake text file and gets the magnitudes
        eqList.readline()
        for line in eqList:
            line = line.split()
            magList.append(float(line[1])) #appends magnitude as float values in list

    with open("earthquakes.txt", "r") as eqList2: #open file 2nd time for gathering the region name only 
            eqList2.readline()
            for line in eqList2:
                line = line.split()
                line = line[0:7] + [" ".join(line[7:])] #takes whole line info and adds to list
                wholeList.append(line)

    greatMag = [] #creating lists for different category magnitudes
    majorMag = []
    strongMag = []
    moderateMag = []

    for x in magList: #conditions for seperating magnitude
        if x >= 8:
            greatMag.append(x)
        elif  7 <= x <= 7.9:
            majorMag.append(x)
        elif 6 <= x <= 6.9:
            strongMag.append(x)
        elif 5 <= x <= 5.9:
            moderateMag.append(x)

    for line in wholeList: #takes only magnitude and region name from whole list
        combinedList.append([line[7], line[1]])

    infoDict =  #creates dictionary    
    for key, val in combinedList: #makes one key per region and adds all values corresponding to the region
        infoDict.setdefault(key, []).append(val)
    print(infoDict)

    for k, v in infoDict.items():
        for i in v:
            if i >= 8:
                print("Great Magnitude:", i)
                pass

if __name__ == "__main__": #runs main function
    main()

【问题讨论】:

如果您从字典中挑选一些样本并在此处发布,将会很有帮助。 可能重复? ***.com/a/23862438/1174169。如果不是,那肯定有关系。这使用字典理解基于键过滤字典。另外,您希望对符合条件的数据做什么 添加了我的代码,你不能运行它,因为你们没有文本文件,只是看看我是如何在接近尾声的时候完成的 值是字符串列表。 【参考方案1】:
for k,v in d.items(): # iterate through key, value of dict 'd'
  for i in v: # iterate to dict value which is a list
    if i > 8: # your condition
      # do something here
      pass

【讨论】:

如果 i >= 8,“if i>=8”行给我一个错误: TypeError: unorderable types: str() >= int() 我在做类似的风格时遇到了同样的问题来这里之前你是怎么做的。它不应该给我一个字符串比较错误,因为这些值是浮点数而不是字符串,但无论如何它都会这样做。 @Lompang,仔细看看你的数据 - 你的 floats 实际上是字符串,试试if float(i) &gt; something: 啊我忘了,你可以在做条件的时候把它改成浮点数,这很有道理,谢谢!

以上是关于检查字典中的浮点值以了解 Python 中的条件的主要内容,如果未能解决你的问题,请参考以下文章

《python基础教程》第4章字典:当索引不好用时 读书笔记

for循环仅检查向量中的最后一个值以使用R检查SQL Server中的重复项?

如何检查变量是不是是Python中的字典?

输出视图中的原始对象值以供检查

根据字典中的键值检查列表中的值,Python

Python 字典推导中的条件表达式