小编Kon*_*lph的帖子

返回值的“三元逻辑”:foo、bar 或 error

我有两种不同的 JSON 结构可以从中检索特定的对象值,基本上是这样的

{
    "one": {
        "foo": {
            "bar": "baz"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

还有一个这样的

{
    "two": {
        "foo": {
            "bar": "qux"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我想bar在两种情况下都返回值加上一个额外的返回变量error,以防 case 1  baz- 也没有 case 2  qux- 匹配任何东西(即匹配null)。

仅使用 jq 1.6 有没有一种简单的方法可以做到这一点?

更新: 以下是实际 JSON 文件的片段:

/* manifest.json, variant A */
{
    "browser_specific_settings": {
        "gecko": {
            "id": "{95ad7b39-5d3e-1029-7285-9455bcf665c0}",
            "strict_min_version": "68.0"
        }
    }
}

/* manifest.json, variant B */
{
    "applications": {
        "gecko": {
            "id": "j30D-3YFPUvj9u9izFoPSjlNYZfF22xS@foobar",
            "strict_min_version": "53.0" …
Run Code Online (Sandbox Code Playgroud)

json batch-processing jq

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

如何重复列表多次

假设我有一个清单

x <- as.list(c("john","jerry","james"))
Run Code Online (Sandbox Code Playgroud)

和值列表

y <- as.list(c(8,5,10))
Run Code Online (Sandbox Code Playgroud)

我想遍历x的第一个元素,y的第一个元素的次数,并在最后添加一个后缀。因此,对于元素john,它将为john_1,john_2 ... john_8。那么jerry就是jerry_1,jerry_2 ... jerry_5。还有james_1,james_2,...,james_10

这是我尝试过的不起作用的

z <- lapply(x, function(i){paste(i,"_",rep(max))})
Run Code Online (Sandbox Code Playgroud)

但这并不能满足我的需求。

也许,我不应该使用lapply或map *的某些版本,但不要在这些基础上进行工作。

r

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

用对角线边缘表示数组的Python方法是什么?

我通过使用两个for循环创建了一个具有对角线边缘的数组,但是我想知道是否有一种更简单的方法,例如列表理解:

im_diag = np.zeros((im_size, im_size), dtype=np.int8)

for x in range(im_size):
    for y in range(im_size):
        if x+y >= im_size:
            im_diag[x,y] = 1
Run Code Online (Sandbox Code Playgroud)

python arrays loops numpy list-comprehension

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

C++ ranged 与手动 for 循环

我是 C++ 新手,为了练习,我一直在解决projecteuler.net上的一些问题。其中一个问题涉及分析一个 1000 位数字,因此我编写了一个程序,可以读取该数字并将其存储在一个向量中。为了测试我的代码,我已将向量打印到控制台。我很困惑,因为如果我使用手动指定的索引for循环,它会打印出正确的值,但是当我将 rangedforauto&关键字一起使用时,它会感到困惑并打印出错误的值。

这是我的代码:

#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

vector<int8_t> reader(string datei)
{
    ifstream file;
    char inputChar;
    vector<int8_t> data;
    file.open(datei);
    while(file >> inputChar) 
        data.push_back(inputChar);
    file.close();

    return data;
}

int main()
{
    string a;
    cout << "Select file to open:" << endl;
    cin >> a;
    vector<int8_t> numbers = reader(a);
    for(int i = 0; i < numbers.size(); i++)
       cout << numbers[i];
    for(int i = 0; i < …
Run Code Online (Sandbox Code Playgroud)

c++ for-loop ranged-loops

3
推荐指数
2
解决办法
125
查看次数

检测连续整数并折叠为字符串

免责声明:这里已经在 Python 上下文中提出了一个非常相似的问题。这是关于 C#。

我有一个包含整数的枚举,例如:

[1, 2, 3, 4, 7, 8, 10, 11, 12, 13, 14]
Run Code Online (Sandbox Code Playgroud)

我想获得一个字符串,列出连续整数的范围:

1-4, 7-8, 10-14
Run Code Online (Sandbox Code Playgroud)

我想出了:

public static void Main()
{
    System.Diagnostics.Debug.WriteLine(FindConsecutiveNumbers(new int[] { 1,2, 7,8,9, 12, 15, 20,21 }));
}

private static string FindConsecutiveNumbers(IEnumerable<int> numbers)
{
    var sb = new StringBuilder();
    int? start = null;
    int? lastNumber = null;
    const string s = ", ";
    const string c = "-";

    var numbersPlusIntMax = numbers.ToList();
    numbersPlusIntMax.Add(int.MaxValue);
    foreach (var number in numbersPlusIntMax)
    {
        var …
Run Code Online (Sandbox Code Playgroud)

c# algorithm list

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

分割长字符串的最快方法

我在Python中有一个很长的字符串:

x = "12;14;14;14;18;12;17;19" # I only show a small part of it : there are 10 millions of ;
Run Code Online (Sandbox Code Playgroud)

目标是将其转变为:

y = array([12, 14, 14, 14, 18, 12, 17, 19], dtype=int)
Run Code Online (Sandbox Code Playgroud)

一种方法是使用array(x.split(";"))or numpy.fromtostring

但两者都非常慢。

有没有更快的方法在Python中做到这一点?

非常感谢您,祝您度过愉快的一天。

python arrays string performance

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

在C#中使用"cout",如"Console.WriteLine"

想象一下,屏幕上会写出许多声明和消息

cout << "statement A :" << a << "\t statement B :" << B
     << "\t statement C :" << C << "\t statement D :" << D;
Run Code Online (Sandbox Code Playgroud)

在C#你写的:

Console.WriteLine(
    "statement A :{0}\t statement B :{1}\t statement C :{2}\t statement D :{3}",
    a, b, c, d);
Run Code Online (Sandbox Code Playgroud)

它就像printf在C#中,但我不想在我的程序中使用C语句; 有没有办法<<在不使用C++的情况下编写更少的东西printf

c++ printf cout

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

getinstance()究竟在单身人士中做了什么?

我遇到过单身人士模式.我无法理解它们之间的区别

singletonobj.getinstance().dosomething() //1st one
Run Code Online (Sandbox Code Playgroud)

singletonobj.dosomething() //2nd one
Run Code Online (Sandbox Code Playgroud)

做了getinstance()什么,在第二种情况下没有做到这一点?

c++ singleton design-patterns

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

计算的类型范围

假设我有以下内容

class X {
    typedef some_numeric_type my_type;
}
Run Code Online (Sandbox Code Playgroud)

如何确定限制my_type

c++ types

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

将项目粘贴到向量中并将它们分组为 x 的倍数,并用空格分隔

如果我有以下包含一些数据的向量,例如

a <- c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20)
Run Code Online (Sandbox Code Playgroud)

假设我想将这 20 个值按照排列顺序分为 4 个,如下所示

[1] "1\n2\n3\n4" "5\n6\n7\n8" "9\n10\n11\n12" "13\n14\n15\n16" "17\n18\n19\n20"
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?我从这个函数开始paste,但我被困住了:(我假设它会涉及一个 for 循环。

paste(a)
Run Code Online (Sandbox Code Playgroud)

grouping r paste

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