检查字典中的浮点值以了解 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) > something:
啊我忘了,你可以在做条件的时候把它改成浮点数,这很有道理,谢谢!以上是关于检查字典中的浮点值以了解 Python 中的条件的主要内容,如果未能解决你的问题,请参考以下文章
《python基础教程》第4章字典:当索引不好用时 读书笔记