我有一些基本的一对多关系的模型类.例如,一本书有很多食谱,每个食谱都有很多成分:
class Book(models.Model):
name = models.CharField(max_length=64)
class Recipe(models.Model):
book = models.ForeignKey(Book)
name = models.CharField(max_length=64)
class Ingredient(models.Model):
text = models.CharField(max_length=128)
recipe = models.ForeignKey(Recipe)
Run Code Online (Sandbox Code Playgroud)
我想要一份特定书籍所有食谱中所有成分的清单.用Python表达这个的最好方法是什么?
如果我使用LINQ,我可能会写这样的东西:
var allIngredients = from recipe in book.Recipes
from ingredient in recipe.Ingredients
select ingredient;
Run Code Online (Sandbox Code Playgroud) 我有一种感觉,这不是一件容易的事,但我需要将UIImageView与位于其上方的另一个UIImage视图结合或展平.例如:我有两个UIImageViews.其中一个有草地的UIImage(1200 x 1200像素).另一个是篮球的UIImage(128 x 128像素),它位于草地的图像上方,使篮球看起来像是在草地上.我希望能够将叠加的UIImageViews作为单个图像文件保存到我的相册中,这意味着我需要以某种方式组合这两个图像.这将如何实现?(注意:截取屏幕截图(320 x 480像素)不是一个可接受的解决方案,因为我希望保留1200 x 1600像素的大小.
问题:
如何在保留大小/分辨率的同时将多个UIImageViews拼接成一个并保存生成的图像.
我正在尝试编写一个函数来展平数组.我有部分功能正常工作,另一半我需要帮助.
flatten: function(anyArray, singleLevel) {
if (singleLevel == true) {
flatArray = Array.prototype.concat.apply([], anyArray);
return flatArray;
}
flatArray = Array.prototype.concat.apply([], anyArray);
if (flatArray.length != anyArray.length) {
flatArray = someObject.array.flatten(flatArray);
}
return flatArray;
}
Run Code Online (Sandbox Code Playgroud)
如果我打字
.flatten([[[1],[1,2,3,[4,5],4],[2,3]]], true);
Run Code Online (Sandbox Code Playgroud)
我希望它只展平一个级别:
[[1],[1,2,3,[4,5],4],[2,3]]
Run Code Online (Sandbox Code Playgroud) 我想要展平一个lxml etree(特别是HTML,如果重要的话.)我如何获得树中所有元素的平面列表?
你如何在linq中实现以下目标?我觉得应该有一个Linq替代方案.
var foods = new Dictionary<string, List<string>>();
foods.Add("Cake", new List<string>() { "Sponge", "Gateux", "Tart" });
foods.Add("Pie", new List<string>() { "Mud", "Apple" });
foods.Add("Roll", new List<string>() { "Sausage" });
var result = new List<Tuple<string, string>>();
foreach (var food in foods)
{
foreach (var detail in food.Value)
{
result.Add(new Tuple<string, string>(food.Key, detail));
}
}
ie
cake <sponge, gateux>
pie <apple>
to
cake, sponge
cake, gateux
pie, apple
Run Code Online (Sandbox Code Playgroud)
谢谢
从这个答案我学会了如何在c#中展平JSON对象.来自JSON字符串:
{"menu": {
"id": "file",
"value": "File",
"popup": {
"menuitem": [
{"value": "New", "onclick": "CreateNewDoc()"},
{"value": "Open", "onclick": "OpenDoc()"},
{"value": "Close", "onclick": "CloseDoc()"}
]
}
}}
Run Code Online (Sandbox Code Playgroud)
至:
以下是字符串行,而不是对象
menu.id:file
menu.value:File
menu.popup.menuitem[0].value:New
menu.popup.menuitem[0].onclick:CreateNewDoc()
menu.popup.menuitem[1].value:Open
menu.popup.menuitem[1].onclick:OpenDoc()
menu.popup.menuitem[2].value:Close
menu.popup.menuitem[2].onclick:CloseDoc()
Run Code Online (Sandbox Code Playgroud)
现在,我想扭转这个过程.我可以从这个问题找到实现,但它是在JavaScript中.
如何unflatten(返回从行结构化JSON)在C#与json.net?
我正在尝试将第一个键:值对的值应用于第二个键:值对的数组内的每个值,同时从books数组中删除键,从而生成一个获取此输入的列表:
var fictionCatalog = [
{
author: 'Michael Crichton',// push into each book
books: [
{name: 'Sphere', price: 10.99},
{name: 'Jurassic Park', price: 5.99},
{name: 'The Andromeda Strain', price: 9.99},
{name: 'Prey', price: 5.99}
]
}
]
Run Code Online (Sandbox Code Playgroud)
并记录此输出:
[
[ Michael Crichton, 'Sphere', 10.99 ],
[ Michael Crichton, 'Jurassic Park', 5.99 ],
[ Michael Crichton, 'The Andromeda Strain', 9.99 ],
[ Michael Crichton, 'Prey', 5.99 ]
]
Run Code Online (Sandbox Code Playgroud)
哪里我卡住了
var fictionCatalog = [
{
author: 'Michael Crichton',
books: [
{name: 'Sphere', …Run Code Online (Sandbox Code Playgroud)我有一个二维节点数组,我希望使用Kotlin数组的flatten函数将其展平为所有节点的单个数组.
val nodes = kotlin.Array(width, { width ->
kotlin.Array(height, { height -> Node(width, height) })
})
Run Code Online (Sandbox Code Playgroud)
然后我尝试在2D数组上调用flatten函数
nodes.flatten()
Run Code Online (Sandbox Code Playgroud)
但我收到一个错误:Type mismatch: inferred type is Array<Array<Node>> but Array<Array<out ???>> was expected.还有另一种方法我应该这样做吗?
使用def方法和val函数展平Vs flatMap:
我定义了一个名为toInt的def方法:
def toInt(s: String): Option[Int] = {
try {
Some(Integer.parseInt(s.trim))
} catch {
case e: Exception => None
}
}
Run Code Online (Sandbox Code Playgroud)
这个方法适用于flatten和flatMap,如下所示:
//using toInt method
val x = 1.to(5).toList
val y = List("a")
val z = x ++ y
val q = z.map(_.toString)
//using map and flatten
println(q.map(toInt).flatten)
//using flatMap
println(q.flatMap(toInt))
Run Code Online (Sandbox Code Playgroud)
现在我在函数"tooInt"中使用val定义了相同的toInt功能(如在def方法中):
val tooInt: String => Option[Int] = s => {
try {
Some(Integer.parseInt(s.trim))
} catch {
case c: Exception => None
}
}
Run Code Online (Sandbox Code Playgroud)
这正常工作与扁平化,但不如下图所示与flatMap: …
我有sampledata使用下面的代码复制的数据:
###producing sample data
sampledatain1 <- data.frame(in_1=c(1,2,3,4,5),in_2=c("A","B","C","D","E"),stringsAsFactors = F)
sampledatain2 <- data.frame(in_1=c(6,7,8,9,10),in_2=c("F","G","H","I","J"),stringsAsFactors = F)
sampledatain3 <- data.frame(in_1=c(99,98,97,96,95),in_2=c("Z","Y","X","W","V"),stringsAsFactors = F)
sampledata <- data.frame(row = 1:3,
colmerge1 = c("MA","MB","MC"),
colmerge2 = -99:-97,
stringsAsFactors = FALSE)
sampledata$df <- list(sampledatain1,sampledatain2,sampledatain3)
Run Code Online (Sandbox Code Playgroud)
我想展平所有嵌套的数据框并将它们组合起来,结果如下desired_data:
###reproducing desired data
library(data.table)
sampledatain1$row <- 1
sampledatain1$colmerge1 <- "MA"
sampledatain1$colmerge2 <- -99
sampledatain2$row <- 2
sampledatain2$colmerge1 <- "MB"
sampledatain2$colmerge2 <- -98
sampledatain3$row <- 3
sampledatain3$colmerge1 <- "MC"
sampledatain3$colmerge2 <- -97
desired_data <- rbindlist(list(sampledatain1,sampledatain2,sampledatain3))
Run Code Online (Sandbox Code Playgroud)
如何使用函数从样本数据生成desired_data来做到这一点?