Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用values()或iteritems()访问表中的值_Python_Python 2.7_Dictionary_Python Unittest - Fatal编程技术网

Python 如何使用values()或iteritems()访问表中的值

Python 如何使用values()或iteritems()访问表中的值,python,python-2.7,dictionary,python-unittest,Python,Python 2.7,Dictionary,Python Unittest,我创建了一个包含标题行、标题列、列ID和行ID的表(上图是表结构的一个非常简单的示例),并使用特定类的一些方法将表转换为加权平面交叉表和轴交叉表,等等。现在我要找的是测试表中的值是否是浮点值,所以我开发了一个unittest测试套件。我使用了Table.values()或Table.iteritems(),但这两个方法在所有表上迭代,包括头和ID,它们都是字符串,因此测试失败。是否有人有更好的解决方案只迭代表的值,而不考虑表中的标签 row_ids=['g','p'] col_i

我创建了一个包含标题行、标题列、列ID和行ID的表(上图是表结构的一个非常简单的示例),并使用特定类的一些方法将表转换为加权平面交叉表和轴交叉表,等等。现在我要找的是测试表中的值是否是浮点值,所以我开发了一个unittest测试套件。我使用了Table.values()或Table.iteritems(),但这两个方法在所有表上迭代,包括头和ID,它们都是字符串,因此测试失败。是否有人有更好的解决方案只迭代表的值,而不考虑表中的标签

    row_ids=['g','p']
    col_ids=['r','c']
    values = { ('g','r'): 0.75, ('g','c'): 0.25, ('p','r'): 0.5, ('p','c'): 0.5, }
    header_row = { 'id':'forme', 'type':'string' }
    header_col = { 'id':'taille', 'type': 'string', } 

我想要的是只读取值字典中的值,但是对于values()和items(),输出是键和值的元组。这就是测试失败的原因。

我想你的意思是你想这样做:

for k, v in values.iteritems():
    if k: # if k has a value indicating this is a header:
        continue  # skip it
    if not isinstance(v, float):
        print 'bad value: ', k, v

我想你的意思是你想这样做:

for k, v in values.iteritems():
    if k: # if k has a value indicating this is a header:
        continue  # skip it
    if not isinstance(v, float):
        print 'bad value: ', k, v

我假设您已经创建了自己的
类?你能给我们看一下相关的代码吗?一个想法是在这个类中将标题和实际数据分开。是的,我使用了老师创建的一个table类中的方法,标题分别引入一个列表中,该列表的项是另一个包含值的字典的键。这是一段代码:row_id=['g','p']col_id=['r','c']values={'g','r'):3,('g','c'):1,('p','r'):2,('p','c'):2,}header_row={'id':'forme','type':'string'}header\u col={'id':'taille','type':'string',}OP应该在问题中澄清,而不是在注释中。是的,你是对的,我已经编辑了这个问题。谢谢你的评论。你能覆盖
类的
iteritems
方法吗?或者你能访问“内部”吗
values
直接变量:
objectoftableClass.values.values()
。我假设你已经创建了自己的
类?你能给我们看一下相关的代码吗?一个想法是将标题和这个类中的实际数据分开。是的,我在我的老师创建的一个表类中使用了这些方法,标题在一个列表中单独介绍,列表中的项目是另一个字典c的键这是一段代码:row_id=['g','p']col_id=['r','c']values={'g','r'):3,('g','c'):1,('p','r'):2,('p','c'):2,}header_row={'id':'forme','type':'string'}header_col{'id':'taille','type':'string',}OP应该在问题中澄清,而不是在注释中。是的,你是对的,我已经编辑了这个问题。谢谢你的评论。你能覆盖
类的
iteritems
方法吗?或者你能访问“内部”吗
values
直接变量:
objectoftableClass.values.values()
。是否可以为iteritems()提供参数?例如,迭代除行ID和列ID之外的项目只是阅读文档:这是不可能的。我只是尝试了您编辑的代码,它工作正常。确实感谢@tom zychIs可以为iteritems()提供参数?例如,迭代除行ID和列ID之外的项目只是阅读文档:这是不可能的。我刚刚尝试了您编辑的代码,它工作正常。非常感谢@tom zych