小编Sha*_*kar的帖子

如何创建一个双引号作为默认报价格式的Python字典?

我正在尝试创建一个python字典,它将用作html文件中的java脚本var以进行可视化.作为一个必要条件,我需要创建一个字典,其中所有名称都在双引号内,而不是Python使用的默认单引号.是否有一种简单而优雅的方式来实现这一目标.

    couples = [
               ['jack', 'ilena'], 
               ['arun', 'maya'], 
               ['hari', 'aradhana'], 
               ['bill', 'samantha']]
    pairs = dict(couples)
    print pairs
Run Code Online (Sandbox Code Playgroud)

生成输出:

{'arun': 'maya', 'bill': 'samantha', 'jack': 'ilena', 'hari': 'aradhana'}
Run Code Online (Sandbox Code Playgroud)

预期产出:

{"arun": "maya", "bill": "samantha", "jack": "ilena", "hari": "aradhana"}
Run Code Online (Sandbox Code Playgroud)

我知道,json.dumps(pairs)做的工作,但字典作为一个整体被转换成一个字符串,这不是我所期待的.

PS:使用json是否有另一种方法可以做到这一点,因为我正在处理嵌套字典.

python dictionary python-2.7 python-3.x

47
推荐指数
5
解决办法
5万
查看次数

将Python字典键分组为列表,并使用此列表作为值创建新字典

我有一个python字典

d = {1: 6, 2: 1, 3: 1, 4: 9, 5: 9, 6: 1}
Run Code Online (Sandbox Code Playgroud)

由于上述字典中的值不是唯一的.我想将唯一值的所有键组合为一个列表,并创建一个新的字典,如下所示:

v = {6:[1], 1:[2, 3, 6], 9: [4, 5]}
Run Code Online (Sandbox Code Playgroud)

注意新词典v的键应该排序.我发现很难想象和实现这个字典创建.请建议我一个简单有效的方法来做到这一点.

python dictionary list python-2.7

37
推荐指数
2
解决办法
5万
查看次数

Python将字符串转换为元组而不分割字符

我正在努力将字符串转换为元组而不分割过程中字符串的字符.有人可以建议一个简单的方法来做到这一点.需要一个班轮.

失败

   a = 'Quattro TT'
   print tuple(a)
Run Code Online (Sandbox Code Playgroud)

作品

  a = ['Quattro TT']  
  print tuple(a)
Run Code Online (Sandbox Code Playgroud)

由于我的输入是一个字符串,我通过将字符串转换为列表来尝试下面的代码,该列表再次将字符串拆分为字符.

失败

a = 'Quattro TT'
print tuple(list(a))
Run Code Online (Sandbox Code Playgroud)

预期产出:

('Quattro TT')
Run Code Online (Sandbox Code Playgroud)

生成输出:

('Q', 'u', 'a', 't', 't', 'r', 'o', ' ', 'T', 'T')
Run Code Online (Sandbox Code Playgroud)

python tuples list python-2.7 python-3.x

36
推荐指数
4
解决办法
13万
查看次数

在Java中设计规则引擎的有效设计模式/风格是什么?

我正在用Java实现规则引擎.我的规则引擎预定义了独立规则和规则集的列表.这里的规则只是一个逻辑.规则集将这些简单规则组合成有序集.

我是一个体面的java开发人员,但不是大师.我的同事为此建议了两个设计.我对这两个设计都不满意,因此这个问题.

我的项目中的规则示例: 假设输入是美国的位置,例如,美国加利福尼亚州圣巴巴拉或美国俄亥俄州,通常采用一些定义明确的城市,州和国家/地区字段.然后我可以有如下规则:

规则1:城市不为空
规则2:状态不为空
规则3:国家等于美国或美国
规则4:州长等于2

我的项目中的RuleSet示例:

RULESET:有效位置此规则集是上面定义的规则的有序集合.

我实现的两个设计模板如下:

设计1:将Enum与匿名内部类一起使用

Rule.java

public interface Rule {
    public Object apply(Object object);
}
Run Code Online (Sandbox Code Playgroud)

NlpRule.java

public enum NlpRule {
    CITY_NOT_NULL(new Rule() {

        @Override
        public Object apply(Object object) {
            String location = (String) object;
            String city = location.split(",")[0];
            if (city != null) {
                return true;
            }
            return false;
        }

    }),

    STATE_NOT_NULL(new Rule() {

        @Override
        public Object apply(Object object) {
            String location = (String) object;
            String state = location.split(",")[1]; …
Run Code Online (Sandbox Code Playgroud)

java enums design-patterns class anonymous-class

20
推荐指数
2
解决办法
2728
查看次数

根据重叠项目将 Python 列表列表分组

我有一个列表列表,我正在尝试根据它们的项目对它们进行分组或聚类。如果没有任何元素位于前一组中,则嵌套列表将开始一个新组。

输入:

paths = [  
        ['D', 'B', 'A', 'H'],  
        ['D', 'B', 'A', 'C'],  
        ['H', 'A', 'C'],  
        ['E', 'G', 'I'],  
        ['F', 'G', 'I']]
Run Code Online (Sandbox Code Playgroud)

我的失败代码:

paths = [
    ['D', 'B', 'A', 'H'],
    ['D', 'B', 'A', 'C'],
    ['H', 'A', 'C'],
    ['E', 'G', 'I'],
    ['F', 'G', 'I']
]
groups = []
paths_clone = paths
for path in paths:
    for node in path:
        for path_clone in paths_clone:
            if node in path_clone:
                if not path == path_clone:
                    groups.append([path, path_clone])
                else:
                    groups.append(path)
print groups
Run Code Online (Sandbox Code Playgroud)

预期输出:

[
 [ …
Run Code Online (Sandbox Code Playgroud)

python algorithm list

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

如何在PyGraphviz中创建重复的节点?

我正在使用PyGraphviz绘制二叉搜索树.我无法使用PyGraphviz创建重复节点,因为边缘循环回节点.

例如,以下代码仅生成5个节点,从而省略了重复的节点.我尝试使用唯一索引标记每个节点,但这不能解决问题.

import pygraphviz as pgv
tree = pgv.AGraph(directed=True, strict=True)
tree.add_node(2)
tree.add_node(3)
tree.add_node(1)
tree.add_node(7)
tree.add_node(3)
tree.add_node(9)
tree.add_node(2)
tree.write('foo.dot')
image = pgv.AGraph('foo.dot')
image.layout()
image.draw('foo.pdf')
image.close()
Run Code Online (Sandbox Code Playgroud)

重复节点丢失

我的代码绘制到BST:

import pygraphviz as pgv
import random


class Node:
    insertion_step = []

    def __init__(self, data):
        self.data = data
        self.left = None
        self.right = None

    def addNode(self, data):
        if data < self.data:
            if self.left is None:
                self.left = Node(data)
                self.printSubtree()
            else:
                self.left.addNode(data)  # recursively calling addNode method
        else:
            if self.right is None:
                self.right = Node(data)
                self.printSubtree()
            else: …
Run Code Online (Sandbox Code Playgroud)

binary-tree graphviz python-2.7 pygraphviz

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

Pygraphviz xlabel位置和颜色不起作用

我正在使用 pygraphviz 为我的项目创建图表。我无法弄清楚如何使节点的 xlabel 居中以及如何更改 xlabel 的颜色。

graph.add_node(row[3], color='goldenrod2', style='filled', shape='box',
                           xlabel=round(self.pi_dict.get(row[3]), 2), fontname='calibri')
Run Code Online (Sandbox Code Playgroud)

我尝试使用xlp='10,10!'xlabelfontcolor='red'。这两个属性似乎都不起作用。我哪里错了。

在此输入图像描述

正如您在附图中所看到的。上面,xlabel 默认位于节点的左角。另外,通过改变xlabel的颜色,可以很容易地将它与其他标签区分开来,这是我无法完成的。

python graphviz networkx python-2.7 pygraphviz

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

如何使用PyGraphviz在无向图的边缘上添加和显示权重?

import pygraphviz as pgv
A = pgv.AGraph()
A.add_node('Alice')
A.add_node('Emma')
A.add_node('John')
A.add_edge('Alice', 'Emma')
A.add_edge('Alice', 'John')
A.add_edge('Emma', 'John')
print A.string()
print "Wrote simple.dot"
A.write('simple.dot')  # write to simple.dot
B = pgv.AGraph('simple.dot')  # create a new graph from file
B.layout()  # layout with default (neato)
B.draw('simple.png')  # draw png
print 'Wrote simple.png'
Run Code Online (Sandbox Code Playgroud)

我想在边缘添加权重,这也应该显示在图上.

python graphviz python-2.7 pygraphviz

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

Python快速排序实现错过了重复的元素

我正在用Python实现Quick Sort.我的代码成功排序列表,但未能包含重复的元素.请帮我找一下这个bug.

from random import choice

def quickSort(lst):
    if not lst:
        return []
    else:
        pivot = choice(lst)
        lesser = quickSort([l for l in lst if l < pivot])
        greater = quickSort([l for l in lst if l > pivot])
        #print lesser, pivot, greater
        return lesser + [pivot] + greater

print quickSort([3, 2, 5, 6, 1, 7, 2, 4,234, 234, 23, 1234, 24, 132])
Run Code Online (Sandbox Code Playgroud)

输出:

[1, 2, 3, 4, 5, 6, 7, 23, 24, 132, 234, 1234]
Run Code Online (Sandbox Code Playgroud)

python sorting quicksort python-2.7

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

Python最快的方法,用于从项列表中对组进行分组

作为我项目的一部分,我需要将字符组成对(唯一).我在列表中有超过1000个这样的字符.从这些字符列表中创建唯一对的最快和优化方法是什么.我目前正在使用itertools,我的代码似乎执行得非常糟糕.

我的代码使用itertools:

import itertools

characters = ['A', 'B', 'C', 'D', 'E']
relations = []
for character in range(len(characters) + 1):
    for combination in itertools.combinations(characters, character):
        if len(combination) == 2:
            relations.append(combination)
print relations
Run Code Online (Sandbox Code Playgroud)

预期产出:

[('A', 'B'), ('A', 'C'), ('A', 'D'), ('A', 'E'), ('B', 'C'),   
('B', 'D'), ('B', 'E'), ('C', 'D'), ('C', 'E'), ('D', 'E')]
Run Code Online (Sandbox Code Playgroud)

python combinations python-2.7

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