小编Ale*_*lor的帖子

Python,使用通配符访问字典

我有一个包含项目的字典,其中键是某种正则表达式.我正在寻找一个函数,以便在传递匹配的字符串时返回匹配项的列表

d = {'a.b': item1, 'b.c':item2}

func(d,'a1b')
>>> [item1]

func(d,'b2c')
>>> [item2]
Run Code Online (Sandbox Code Playgroud)

有没有pythonic方式来做到这一点?我能想出的唯一解决方案是:

import re
def func(d, event):
    res = list()
    for key, item in d.iteritems():
        if re.match(key, event):
            res.append(item)
    return res
Run Code Online (Sandbox Code Playgroud)

python regex dictionary

6
推荐指数
2
解决办法
1万
查看次数

从发电机获取下一个项目失败

有代码段.运行该程序会收到以下错误

epoch, step, d_train_feed_dict, g_train_feed_dict = inf_data_gen.next()
AttributeError: 'generator' object has no attribute 'next'
Run Code Online (Sandbox Code Playgroud)

相应的代码段列出如下.它背后的原因是什么?

inf_data_gen = self.inf_get_next_batch(config)

def inf_get_next_batch(self, config):
        """Loop through batches for infinite epoches.
        """
        if config.dataset == 'mnist':
            num_batches = min(len(self.data_X), config.train_size) // config.batch_size
        else:
            self.data = glob(os.path.join("./data", config.dataset, self.input_fname_pattern))
            num_batches = min(len(self.data), config.train_size) // config.batch_size

        epoch = 0
        while True:
            epoch += 1
            for (step, d_train_feed_dict, g_train_feed_dict) in \
                    self.get_next_batch_one_epoch(num_batches, config):
                yield epoch, step, d_train_feed_dict, g_train_feed_dict
Run Code Online (Sandbox Code Playgroud)

python generator python-3.x

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

在树莓派上使用 Opencv 显示视频流时出错

我正在尝试从连接了 PiCam 的 Raspberry Pi 访问实时视频源。我在界面设置中启用了相机,甚至通过使用 PiCam 库拍摄一些图片和视频来测试它。但是,OpenCV 给我带来了麻烦。我按照本教程安装了 open CV (向 Adrian Rosenbrock 大喊大叫)。

查看下面的屏幕截图以获取代码和错误消息。我正在安装 OpenCV 的虚拟环境中运行所有内容,就像 Adrian 建议的那样。

代码和错误信息

视频错误:V4L:无法通过索引 0 打开相机

根据我从人们遇到的其他问题中读到的内容,有时可以通过使用索引值来解决此错误。如果我将索引值更改为 -1 或 1,就像大多数解决方案所建议的那样,我要么得到相同的东西,要么得到稍微不同的“无法访问相机”错误。

我对 OpenCV 和 RPi 比较陌生,所以我可能只是缺少一些简单的东西。任何建议都非常感谢,谢谢!

python opencv python-3.x raspberry-pi raspberry-pi3

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

Electron JS / Node JS桌面应用程序作为本地网络Web服务器

是否可以将Electron JS桌面应用程序制作为Web服务器,以便在启动该应用程序时服务器也将启动,并且可以从同一网络/ LAN中的其他计算机访问该服务器?

desktop-application node.js electron

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

传递函数样式之间的差异

这些函数调用样式之间有什么区别?

onPress = { () => { this.myFunctions() } }
Run Code Online (Sandbox Code Playgroud)

onPress = { this.myFunctions() }
Run Code Online (Sandbox Code Playgroud)

javascript react-native

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

安装了哪些elm软件包版本?

elm-package可以管理榆树的依赖,但它支持的唯一命令(如的版本0.18.0)的install,publish,bumpdiff根据运行它不带参数.我期待着elm-package list显示已安装的软件包.

是否有命令列出当前安装的elm软件包版本?

package-managers elm

4
推荐指数
1
解决办法
428
查看次数

为什么python不支持三元表达式中的'pass'?

我写了以下代码,结果如下SyntaxError: invalid syntax:

self.vec.append(v1) if v1 else pass
Run Code Online (Sandbox Code Playgroud)

我认为它会像这段代码一样:

if v1:
    self.vec.append(v1)
Run Code Online (Sandbox Code Playgroud)

只是想知道为什么python在支持时不支持这种语法:

self.vec.append(v1) if v1 else 0 
Run Code Online (Sandbox Code Playgroud)

python

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

克服Java中的类型擦除

我有一个客户类,我无法改变.

List<Integer> list1= Arrays.asList(1,2,3);
System.out.println("Total sum is:"+sum(list1));
printlist(list1);
List<Double> list2=Arrays.asList(1.0,2.0,3.0);
System.out.println("Total sum is:"+sum(list2));
printlist(list2);
Run Code Online (Sandbox Code Playgroud)

我在这里有业务逻辑

private static Object sum(List<? extends Number> list) {
    double sum = 0;
    for (Number i: list) {
        sum+=i.doubleValue();
    }     
    return sum;
}
Run Code Online (Sandbox Code Playgroud)

所以我想返回6表示整数,6.0表示双精度数.我怎样才能做到这一点?我想根据类型将类型转换为int或double,但由于类型擦除,所有信息都会丢失.有人能帮我吗?

java generics type-erasure

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