我有一系列哈希:
[{"Vegetable"=>10}, {"Vegetable"=>5}, {"Dry Goods"=>3>}, {"Dry Goods"=>2}]
Run Code Online (Sandbox Code Playgroud)
我需要在inject
这里使用,但我确实在苦苦挣扎.
我想要一个反映前一个哈希重复键总和的新哈希:
[{"Vegetable"=>15}, {"Dry Goods"=>5}]
Run Code Online (Sandbox Code Playgroud)
我控制输出此哈希的代码,以便我可以在必要时进行修改.结果主要是哈希,因为这可能会最终嵌套任意数量的级别,然后很容易在数组上调用flatten但不会平滑哈希的键/值:
def recipe_pl(parent_percentage=nil)
ingredients.collect do |i|
recipe_total = i.recipe.recipeable.total_cost
recipe_percentage = i.ingredient_cost / recipe_total
if i.ingredientable.is_a?(Purchaseitem)
if parent_percentage.nil?
{i.ingredientable.plclass => recipe_percentage}
else
sub_percentage = recipe_percentage * parent_percentage
{i.ingredientable.plclass => sub_percentage}
end
else
i.ingredientable.recipe_pl(recipe_percentage)
end
end
end
Run Code Online (Sandbox Code Playgroud) 在MySQL中,索引(索引)是否被定义为UNIQUE区分大小写?
我需要按值排序地图,然后按键排序.我有一张包含这样内容的地图......
1 realistically
8 really
4 reason
3 reasonable
1 reasonably
1 reassemble
1 reassembled
2 recognize
92 record
48 records
7 recs
Run Code Online (Sandbox Code Playgroud)
我需要按顺序获取值,但是关键是在值按顺序后键需要按字母顺序排列.最好的方法是什么?
我似乎无法找到一种方法来选择括号的开头并通过VS Code中的某些键组合跳转到它的末尾.例如,在atom中,这是用Ctrl+ 完成的m.
我知道有一种方法可以用Cmd+ Shift+ 跳转到括号或花括号的开头和结尾,\但这对标签不起作用.有任何想法吗?
在我的Android应用程序中,我遇到了一个非常奇怪的崩溃,当我在我的UI上按下一个按钮(图像)时,整个应用程序冻结,几秒钟后我就会出现可怕的强制关闭对话框.
以下是在日志中打印的内容:
WARN/WindowManager(88): Key dispatching timed out sending to package name/Activity
WARN/WindowManager(88): Dispatch state: {{KeyEvent{action=1 code=5 repeat=0 meta=0 scancode=231 mFlags=8} to Window{432bafa0 com.android.launcher/com.android.launcher.Launcher paused=false} @ 1281611789339 lw=Window{432bafa0 com.android.launcher/com.android.launcher.Launcher paused=false} lb=android.os.BinderProxy@431ee8e8 fin=false gfw=true ed=true tts=0 wf=false fp=false mcf=Window{4335fc58 package name/Activity paused=false}}}
WARN/WindowManager(88): Current state: {{null to Window{4335fc58 package name/Activity paused=false} @ 1281611821193 lw=Window{4335fc58 package name/Activity paused=false} lb=android.os.BinderProxy@434c9bd0 fin=false gfw=true ed=true tts=0 wf=false fp=false mcf=Window{4335fc58 package name/Activity paused=false}}}
INFO/ActivityManager(88): ANR in process: package name (last in package name)
INFO/ActivityManager(88): Annotation: keyDispatchingTimedOut
INFO/ActivityManager(88): …
Run Code Online (Sandbox Code Playgroud) 我正准备出版的情节.我创建了一个堆积的盒子图,显示每组患者的频率,这些患者是血清反应阴性的一些复杂积累.图例使用了数据框中的标签,这些标签适合我们正在处理项目但不适合发布的标签.我想将名称更改为读者更快速理解的内容.
例如,运行以下脚本
grp <- gl(n=4,k=20,labels=c("group a","group b","group c", "group d"))
value <- runif(n=80, min=10, max=150)
outcome <- cut(value,2)
data <- data.frame(grp,value,outcome)
ggplot(data, aes(grp, fill=outcome)) + geom_bar() +xlab("group")
+ylab("number of subjects") + labs(fill="Serologic response")
Run Code Online (Sandbox Code Playgroud)
该代码创建了不适合发布的关键标签"(10.4,80)"和"(80,150)".相反,我希望"双重否定"和"对a和/或b为正".
我想我可以回到数据框并转换为获得具有正确标签的新变量.或者我可以重新考虑我的因素?但是,我更愿意在绘图时这样做.
我发现箭头键在sqlplus控制台上不起作用.例如,如果我按左箭头键,它显示为
SQL>^[[B
Run Code Online (Sandbox Code Playgroud)
有没有解决这个问题的解决方案?
我想创建一个哈希表,将我的对象作为他的密钥,而不将其转换为String.
有点像这样:
var object1 = new Object();
var object2 = new Object();
var myHash = new HashTable();
myHash.put(object1, "value1");
myHash.put(object2, "value2");
alert(myHash.get(object1), myHash.get(object2)); // I wish that it will print value1 value2
Run Code Online (Sandbox Code Playgroud)
编辑:请参阅我的答案以获得完整的解决方案
我有一个关联的数据数组,我有一个我想从该数组中删除的键数组(同时保持原始顺序中的其余键 - 不是这可能是一个约束).
我要寻找一个一个衬垫的PHP的做到这一点.
我已经知道如何我可以遍历数组,但它似乎应该有一些array_map
用unset
或array_filter
解决方案外面我的把握.
我搜索了一下,但没有发现任何简洁.
要清楚这是一行中的问题:
//have this example associative array of data
$data = array(
'blue' => 43,
'red' => 87,
'purple' => 130,
'green' => 12,
'yellow' => 31
);
//and this array of keys to remove
$bad_keys = array(
'purple',
'yellow'
);
//some one liner here and then $data will only have the keys blue, red, green
Run Code Online (Sandbox Code Playgroud) 我试图array_keys()
通过引用来获取关联数组的第一个键,而不创建临时变量等.不幸的是,reset()
并且array_shift()
通过引用获取数组参数,因此似乎都不是可行的结果.
用PHP 5.4我将在天堂; array_keys($array)[0];
,但不幸的是,这当然也不是一种选择.
我可以创建一个函数来实现这个目的,但我只能想象有一些PHP的array_*
函数可以在单个语句中产生所需的结果,这是我想不到的或者想出来的.
所以:
$array = array('foo' => 'bar', 'hello' => 'world');
$firstKey = assorted_functions($array); // $firstKey = 'foo'
Run Code Online (Sandbox Code Playgroud)
在我的问题中"无参考"条款的原因只是因为我认为array_keys()
是必需的(如果有一种方式通过参考,请消防)
我会使用key()
,但这需要一个,reset()
因为我不确定此操作时指针的位置.
附录
我正在跟进我最近的一个实现:正如我在评论中提到的,它将使用相同的内存,所以如果这是一个问题,这个问题没有解决方案.
$a = range(0,99999);
var_dump(memory_get_peak_usage()); // int(8644416)
$k = array_keys($a)[0];
var_dump(memory_get_peak_usage()); // int(17168824)
Run Code Online (Sandbox Code Playgroud)
我知道这一点,因为PHP没有这样的优化功能,但认为有必要明确提及.
接受的答案的简洁性很好,如果你正在使用合理大小的数组,那么它们就可以工作了.