我正在尝试创建一个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字典
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的键应该排序.我发现很难想象和实现这个字典创建.请建议我一个简单有效的方法来做到这一点.
我正在努力将字符串转换为元组而不分割过程中字符串的字符.有人可以建议一个简单的方法来做到这一点.需要一个班轮.
失败
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) 我正在用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) 我有一个列表列表,我正在尝试根据它们的项目对它们进行分组或聚类。如果没有任何元素位于前一组中,则嵌套列表将开始一个新组。
输入:
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) 我正在使用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) 我正在使用 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的颜色,可以很容易地将它与其他标签区分开来,这是我无法完成的。
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实现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) 作为我项目的一部分,我需要将字符组成对(唯一).我在列表中有超过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 ×8
python-2.7 ×8
graphviz ×3
list ×3
pygraphviz ×3
dictionary ×2
python-3.x ×2
algorithm ×1
binary-tree ×1
class ×1
combinations ×1
enums ×1
java ×1
networkx ×1
quicksort ×1
sorting ×1
tuples ×1