小编Tan*_*nia的帖子

在csv文件中单独读取列名

我有一个包含以下列的csv文件:

ID,姓名,年龄,性别

其次是上面列的很多值.我试图单独读取列名称并将它们放在列表中.

我正在使用Dictreader,这给出了正确的细节:

with open('details.csv') as csvfile:
    i=["name","age","sex"]
    re=csv.DictReader(csvfile)
    for row in re:
        for x in i:
            print row[x]
Run Code Online (Sandbox Code Playgroud)

但我想要做的是,我需要列表列表(在上面的例子中为"i")用输入csv自动解析,而不是在列表中硬编码.

with open('details.csv') as csvfile:

    rows=iter(csv.reader(csvfile)).next()
    header=rows[1:]
    re=csv.DictReader(csvfile)
    for row in re:
        print row
        for x in header:

            print row[x]
Run Code Online (Sandbox Code Playgroud)

这给出了一个错误

Keyerrror:'name'
Run Code Online (Sandbox Code Playgroud)

在行打印行[x].我哪里错了?是否可以使用Dictreader获取列名?请帮助.感谢致敬.

python

38
推荐指数
4
解决办法
8万
查看次数

有人可以解释一下这种类型的递归是如何工作的吗?

我在递归中遇到了这个问题.我无法弄清楚它是如何工作的.我理解递归的基础知识但这完全让我感到困惑.请帮忙.

main() { 
    foo(3); 
}

void foo(int x) {
    if (x >= 1) {
        foo(--x);
        printf("%d", x);
        foo(--x);
    }
}
Run Code Online (Sandbox Code Playgroud)

我认为这个程序不打印任何东西,但它打印0120.

是不是第一次调用foo( - 3)即foo(2)跳转到函数的开头并重复直到3递减到0?

请解释这是如何工作的.

c recursion

7
推荐指数
1
解决办法
193
查看次数

C实现电源功能

我是一个初学者,试图理解这个无辜的C函数:给定两个数字x和y,这个函数计算x提升到y的幂.

/* Function to calculate x raised to the power y */
int power(int x, unsigned int y)
{
    if( y == 0)
        return 1;
    else if (y%2 == 0)
        return power(x, y/2)*power(x, y/2); //what's happening here?
    else
        return x*power(x, y/2)*power(x, y/2);
}
Run Code Online (Sandbox Code Playgroud)

我正在努力追踪它们将两个函数的返回值相乘的部分.假设我将4和3作为x和y传递,我的函数跳转到第二个其他部分.然后我回到4*(power(4,1)*power(4,1)) 我的理解,下一个调用是4*power(4,0)*power(4*0),因为y == 0返回1,它应该是4*1*1,我想要4*4*4.我在这里遗漏了一些东西.这个算法到底在做什么?

这个函数背后的逻辑是乘以x,y倍.任何人都可以告诉我这个简单的除法运算(或分而治之)如何实现逻辑?提前致谢.

c recursion

5
推荐指数
1
解决办法
1607
查看次数

Java8流和过滤器

我有一个set multimap,它存储了一个月的一些字符串(整数).

MonthlyCount = {1:["hello"],2:["hello","hi"]}   
Run Code Online (Sandbox Code Playgroud)

我有一个地图,计算每月的字符串数量并添加它们.我使用containsKey过滤器来检查密钥是否存在于集合中,并将它们添加到地图中.

final String[] months = new DateFormatSymbols().getShortMonths();
final Map<String, Object> metaData = new LinkedHashMap<>();
private SetMultimap<Integer, String> MonthlyCount;

for (int i = 0; i <= month; i++) {
    final int count = MonthlyCount.containsKey(i + 1) ? MonthlyCount.get(i + 1).size() : 0;
    metaData.put(months[i], count);
}
Run Code Online (Sandbox Code Playgroud)

有没有办法用Java8的流和过滤器实现相同的行为?

java guava java-8 java-stream

3
推荐指数
1
解决办法
249
查看次数

单元测试文件用Java编写,没有接口包装器

我有一个写入文件的现有Java类.

public final class WriteToFile{

    private Writer file_writer;
    private static final String encoding_format = "UTF8";
    private FileWrite(final File fpath) throws IOException {
        this.file_writer = new OutputStreamWriter(new FileOutputStream(fpath), encoding_format);
    }

    @Override
    public void fileWrite(final String msg) {
        try {
            this.file_writer.write(msg);
            this.file_writer.write("\n");
            this.file_writer.flush();
        this.file_writer.close();
        } catch (IOException e) {
            log.error("File write failed", e);
        }
    }

    }
Run Code Online (Sandbox Code Playgroud)

为了对此进行单元测试,我了解到使用Mocking框架创建文件模拟并不是一个好习惯.我在这里测试什么?测试这个的唯一方法是再次执行文件写入,并检查预期内容和实际内容是否相同.在这种情况下,以JUnit方式执行此操作将如本文中提到的如何在Java中测试写入文件?.但是,我不打算重写文件编写代码,以包含接口包装器.我该如何解决这个问题?

@Test public void testfileWrite() {
  String msg = "somemessage";
  String fpath = "path/to/file";
  Writer file_writer = new OutputStreamWriter(new FileOutputStream(fpath), "UTF8");
  file_writer.write(msg);
  assertEquals("somemessage", file_writer.toString()); …
Run Code Online (Sandbox Code Playgroud)

java junit unit-testing

0
推荐指数
1
解决办法
1003
查看次数

标签 统计

c ×2

java ×2

recursion ×2

guava ×1

java-8 ×1

java-stream ×1

junit ×1

python ×1

unit-testing ×1