小编ov7*_*v7a的帖子

Python将set转换为string,反之亦然

设置为字符串.明显:

>>> s = set([1,2,3])
>>> s
set([1, 2, 3])
>>> str(s)
'set([1, 2, 3])'
Run Code Online (Sandbox Code Playgroud)

要设置的字符串?也许是这样的?

>>> set(map(int,str(s).split('set([')[-1].split('])')[0].split(',')))
set([1, 2, 3])
Run Code Online (Sandbox Code Playgroud)

非常难看.是否有更好的序列化/反序列化集的方法?

python string set python-2.7

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

postgresql中的咨询锁超时

我正在从ORACLE迁移.目前我正在尝试移植此电话:

lkstat := DBMS_LOCK.REQUEST(lkhndl, DBMS_LOCK.X_MODE, lktimeout, true);
Run Code Online (Sandbox Code Playgroud)

此函数尝试获取锁定lkhndl,如果在timeout几秒钟后无法获取锁定,则返回1 .

在postgresql我用

pg_advisory_xact_lock(lkhndl);
Run Code Online (Sandbox Code Playgroud)

但是,它似乎永远等待锁定.pg_try_advisory_xact_lock如果失败则立即返回.有没有办法实现锁定获取的超时版本?

lock_timeout设置,但我不确定它是否适用于咨询锁定以及pg_advisory_xact_lock超时后的行为方式.

sql oracle postgresql locking database-migration

13
推荐指数
1
解决办法
1624
查看次数

Python:如何从dir中的所有模块导入?

目录结构:

main.py
my_modules/
   module1.py
   module2.py
Run Code Online (Sandbox Code Playgroud)

module1.py:

class fooBar():
    ....
class pew_pew_FooBarr()
    ....
...
Run Code Online (Sandbox Code Playgroud)

如何将所有类从module*添加到没有前缀的main(即使用它们像foo = fooBar(),而不是foo = my_modules.module1.fooBar()).

一个明显的决定是在main.py中写这样的东西:

from my_modules.module1 import *
from my_modules.module2 import *
from my_modules.module3 import *
...
Run Code Online (Sandbox Code Playgroud)

但是我不想在创建新模块N时更改main.py.那有解决方案吗?

我知道导入这样的类不是一个好主意,但我仍然对此感到好奇.

UPD:这个问题不同于这个问题在Python中加载一个文件夹中的所有模块,因为我的问题是加载没有命名空间的模块.

python import module

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

是否可以在Elasticsearch中获取copy_to字段的内容?

我正在使用Elasticsearch v2.3.0.假设我有一个带映射的索引:

{
"mappings": {
  "post": {
    "dynamic": false,
    "_source": {
      "enabled": true
    },
    "properties": {
      "text": {
        "norms": {
          "enabled": false
        },
        "fielddata": {
          "format": "disabled"
        },
        "analyzer": "text_analyzer",
        "type": "string"
      },
      "subfield": {
        "properties": {
          "subsubfield": {
            "properties": {
              "subtext": {
                "index": "no",
                "analyzer": "text_analyzer",
                "type": "string",
                "copy_to": "text"
              }
            }  
          }
        }
      }
    },
    "_all": {
      "enabled": false
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

所以,从文本subfield.subsubfield.subtext复制到文本fieldcopy_to.如果你查询信息,然后从纯数据text显示在text现场,因为_source不被修改.如果要获取所有文本,则应聚合客户端上的所有字段.如果存在许多子场,则这可能是不方便的.

是否有一个神奇的查询,它允许获取text所有文本复制到它的字段?

querying elasticsearch

8
推荐指数
1
解决办法
5030
查看次数

如何存储稀疏邻接矩阵

我读了几个主题,但我迷路了.我对此很陌生.我想存储巨大的稀疏矩阵并有几个想法,但可以在它们之间进行选择.这是我的需求:

  1. 邻接矩阵约.5000万个顶点.
  2. 每个顶点的最大邻居数量 - 大约 10 000.
  3. 每个顶点的平均邻居数量 - 约.200-300.
  4. 快速行查询 - 向量将乘以此矩阵.
  5. O(1)增加边缘的复杂性.
  6. 最有可能的是,边缘不会被删除.
  7. 枚举与v相邻的顶点 - 尽可能快.
  8. 可移植性 - 必须有一种方法将基地从一台计算机转移到另一台计算机.

所以,这是我的想法:

  1. 巨大的桌子对(行,col).非常简单,但顶点的枚举将至少为O(log N),其中N - 表的大小.我觉得它很慢.此外,它必须编入索引.每个RDBMS都有用.
  2. 大量的列表:每个顶点一个列表.枚举非常快,但是存储它不需要太多资源吗?另外,我不确定在这种情况下使用哪个DBMS:也许是一些NoSql?
  3. 巨大的桌子(行|集合).上面两个组合.我不确定是否有任何RDBMS支持任意集.你知道任何?也许NoSql在这里有用吗?
  4. 邻接列表的集合.任何RDBMS都适用于此,并且复杂性方面的成本很高,但是对于一个顶点,可以通过对DB的多个请求来终止它们.
  5. HDF5 - 我认为由于I/O会很慢.
  6. Neo4j - 据我所知,它将数据存储在双链表中,因此它实际上与№4相同,我是对的吗?

请帮助我选择或提供更好的决定.

如果我在某处估计错了,请纠正我.

sql database sparse-matrix bigdata nosql

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

将列表转换为dict,列表项作为键,列表索引作为python中的值

我想改造

l = ['a','b','c','d']
Run Code Online (Sandbox Code Playgroud)

d = {'a': 0, 'b': 1, 'c': 2, 'd': 3}
Run Code Online (Sandbox Code Playgroud)

我到目前为止最好的解决方案是:

d = {l[i]:i for i in range(len(l))}
Run Code Online (Sandbox Code Playgroud)

有没有更优雅的方式来做到这一点?

python dictionary list python-2.7

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

Threadsafe可变集合,快速元素删除和随机获取

我需要一个具有三个操作的线程安全数据结构:remove,getRandom,reset.我现在只有两个想法.

第一个:同步变量中的Seq.

val all: Array[String] =  ... //all possible.
var current: Array[String] = Array.empty[String]

def getRandom(): = {
  val currentAvailable = current
  currentAvailable(Random.nextInt(currentAvailable.length))
}

def remove(s: String) = {
  this.syncronized {
     current = current diff Seq(s)
  }
}

def reset(s: String) = {
  this.syncronized {
     current = all
  }
}
Run Code Online (Sandbox Code Playgroud)

第二:保持一些Map [String,Boolean],当元素当前存在时,bool为true.主要问题是制作一个快速的getRandom方法(在最坏的情况下不是O(n)).

有没有更好的方法来实现这个?

collections multithreading scala

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

如何在JavaFx8中获取场景控制器?

我使用了几个场景,目前每个场景都有一种方法,比如

  void setScene1() {
    FXMLLoader loader = new FXMLLoader(getClass().getResource("/main2.fxml"));
    Parent root = FXMLLoader.load();
    Scene scene = new Scene(root);
    loader.<Controller1>getController().callMethod();
    primaryStage.setScene(scene);

  }
Run Code Online (Sandbox Code Playgroud)

但是我想要记住Scene并且那样做

  void setScene1() {
    FXMLLoader loader = scene1.getLoaderSomehow(); // < ---- ????
    loader.<Controller1>getController().callMethod();
    primaryStage.setScene(scene1);

  }
Run Code Online (Sandbox Code Playgroud)

javafx javafx-8

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

如何为Scala中的任何集合创建通用隐式类?

我想编写一个方法,None如果集合为空,则返回该方法Some(collection).

我能得到的最好的是

implicit class CollectionExtensions[A, Repr](self: TraversableLike[A, Repr]){
  def toOption: Option[Repr] = if (self.nonEmpty) Some(self.asInstanceOf[Repr]) else None
}
Run Code Online (Sandbox Code Playgroud)

但铸造.asInstanceOf[Repr]似乎是错误的.什么是正确的方法?

generics collections scala implicit-conversion

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

从scala中的Tuple3的前两个元素中获取Tuple2

给定一个Tuple3,例如("one", "two", "three")我想获得tuple2,它只包含前两个元素("one", "two").

一种方法是这样的:

val (one, two, _) = ("one", "two", "three")
val result = (one, two)
Run Code Online (Sandbox Code Playgroud)

但是,如果我想从tuple16获取tuple14,那该怎么办呢?样板.

更新:

更具体的用例(func2和func3不能更改).

def func3(one: String, two: String, three: String) = println("Do something") 
def func2(one: String, two: String) = println("Do something 2")

val originalTuple = ("one", "two", "three")
val newTuple = ???

(func3 _).tupled(originalTuple)
(func2 _).tupled(newTuple)
Run Code Online (Sandbox Code Playgroud)

scala tuples

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

scala中的快速子字符串

根据Java的substring()的时间复杂度,java的子串需要线性时间.有更快的方式(可能在某些情况下)?我可能会建议迭代器,但怀疑它也需要O(n).

val s1: String  = s.iterator.drop(5).mkString
Run Code Online (Sandbox Code Playgroud)

但迭代器上的几个操作比字符串上的相同操作更快,对吧?

string scala substring

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