在我编写的Python程序中,我使用for循环和增量变量与列表理解进行比较,map(itemgetter)并len()计算列表中字典中的条目.使用每种方法需要相同的时间.我做错了什么还是有更好的方法?
这是一个大大简化和缩短的数据结构:
list = [
{'key1': True, 'dontcare': False, 'ignoreme': False, 'key2': True, 'filenotfound': 'biscuits and gravy'},
{'key1': False, 'dontcare': False, 'ignoreme': False, 'key2': True, 'filenotfound': 'peaches and cream'},
{'key1': True, 'dontcare': False, 'ignoreme': False, 'key2': False, 'filenotfound': 'Abbott and Costello'},
{'key1': False, 'dontcare': False, 'ignoreme': True, 'key2': False, 'filenotfound': 'over and under'},
{'key1': True, 'dontcare': True, 'ignoreme': False, 'key2': True, 'filenotfound': 'Scotch and... well... neat, thanks'}
]
Run Code Online (Sandbox Code Playgroud)
这是for循环版本:
#!/usr/bin/env python
# …Run Code Online (Sandbox Code Playgroud) 我有一个项目列表,由Linq从DB中给出.现在我用这个列表填充了一个ComboBox.
我怎么能得到一个空行?
我的问题是,在列表中,值不允许为null,因此我无法轻松添加新的空项.
我想为我的作业"书店服务"编写带用户输入的Bash脚本.首先,它有选项菜单,如"添加新书名""作者姓名""删除书籍""更新""搜索""显示书籍列表""退出".如果我选择选项1,我必须输入新书的名字.当我选择"show book list"选项时,如何编写用户输入并显示输出数据.我在这个作业中遇到了麻烦.请有人帮我清楚这一点,这对你们所有人都非常有帮助和感激.
这让我疯了.我想要做的就是从awk向终端传递命令,其中命令是由其他变量连接在一起的字符串.
awk的文档说的是类似的东西
"echo" $1 | getline var
Run Code Online (Sandbox Code Playgroud)
应该将$ 1的值放入var.但这种情况并非如此.我在这里错过了什么?
我应该补充一点,我实际上有一个循环
for ( i = 1; i <=NF ; i=i+1 )
{
"echo" $i | getline var
printf var " "
}
printf "\n"
Run Code Online (Sandbox Code Playgroud)
对于inputfile喜欢
0 2
1 2
Run Code Online (Sandbox Code Playgroud)
输出
0 0
0 0
Run Code Online (Sandbox Code Playgroud)
搞什么鬼.
我想做这样的事情
ruby test.rb | source /dev/stdin
Run Code Online (Sandbox Code Playgroud)
test.rb打印出来的地方cd /.没有错误,但它也没有做任何事情.如果我用这个:
ruby test.rb > /tmp/eraseme2352; source /tmp/eraseme2352
Run Code Online (Sandbox Code Playgroud)
它工作正常,但我想避免中间文件.
编辑:这一点的重点是命令完成后需要保持更改.对不起,我之前没有说清楚.
需要以下输出
ONGC044
ONGC043
ONGC042
ONGC041
ONGC046
ONGC047
Run Code Online (Sandbox Code Playgroud)
从这个输入
Medium Label Medium ID Free Blocks
===============================================================================
[ONGC044] ECCPRDDB_FS_43 ac100076:4aed9b39:44f0:0001 195311616
[ONGC043] ECCPRDDB_FS_42 ac100076:4aed9b1d:44e8:0001 195311616
[ONGC042] ECCPRDDB_FS_41 ac100076:4aed9af4:4469:0001 195311616
[ONGC041] ECCPRDDB_FS_40 ac100076:4aed9ad3:445e:0001 195311616
[ONGC046] ECCPRDDB_FS_44 ac100076:4aedd04a:68c6:0001 195311616
[ONGC047] ECCPRDDB_FS_45 ac100076:4aedd4a0:6bf5:0001 195311616
Run Code Online (Sandbox Code Playgroud) 我发现以下模式经常发生:
b->last = ngx_cpymem(b->last, "</pre><hr>", sizeof("</pre><hr>") - 1);
Run Code Online (Sandbox Code Playgroud)
请注意,文字字符串使用了两次.提取物来自nginx源库.
在编译单元中遇到这些文字时,编译器应该能够合并这些文字.
我的问题是:
这些问题很重要,因为它允许程序员在不损失效率的情况下进行冗长 - 即,考虑将大量静态数据模型硬连接到程序中(例如,某些低级方案中使用的决策支持系统的规则) .
编辑
2分/澄清
上面的代码由公认的"主"程序员编写.这家伙一手写了nginx.
我没有问过文字硬编码的哪种可能机制更好.所以不要偏离主题.
编辑2
我最初的例子是非常人为的和限制性的.以下代码段显示了嵌入到内部硬编码知识中的字符串文字的用法.第一个片段用于配置解析器告诉它为哪个字符串设置哪个枚举值,第二个片段通常用作程序中的字符串.我个人对此感到满意,只要编译器使用字符串文字的一个副本,并且由于元素是静态的,它们不会进入全局符号表.
static ngx_conf_bitmask_t ngx_http_gzip_proxied_mask[] = {
{ ngx_string("off"), NGX_HTTP_GZIP_PROXIED_OFF },
{ ngx_string("expired"), NGX_HTTP_GZIP_PROXIED_EXPIRED },
{ ngx_string("no-cache"), NGX_HTTP_GZIP_PROXIED_NO_CACHE },
{ ngx_string("no-store"), NGX_HTTP_GZIP_PROXIED_NO_STORE },
{ ngx_string("private"), NGX_HTTP_GZIP_PROXIED_PRIVATE },
{ ngx_string("no_last_modified"), NGX_HTTP_GZIP_PROXIED_NO_LM },
{ ngx_string("no_etag"), NGX_HTTP_GZIP_PROXIED_NO_ETAG },
{ ngx_string("auth"), NGX_HTTP_GZIP_PROXIED_AUTH },
{ ngx_string("any"), NGX_HTTP_GZIP_PROXIED_ANY },
{ ngx_null_string, 0 }
};
Run Code Online (Sandbox Code Playgroud)
紧随其后:
static ngx_str_t ngx_http_gzip_no_cache = ngx_string("no-cache");
static ngx_str_t ngx_http_gzip_no_store …Run Code Online (Sandbox Code Playgroud) 我想让这个工作:
echo "Would you like to configure dns?"
select yn in "Yes" "No"; do
case $yn in
Yes ) echo "you have selected to configure dns"; break;;
No ) exit; break;;
esac
done
Run Code Online (Sandbox Code Playgroud)
我一直收到这个错误:
menu.sh:2:select:not found
menu.sh:7:语法错误:"done"意外
乔,先生,谢谢
我有包含数十万条记录的文本文件.其中一个字段是日期字段.有没有办法根据日期字段对文件进行排序?
09-APR-12 04.08.43.632279000 AM
19-MAR-12 03.53.38.189606000 PM
19-MAR-12 03.56.27.933365000 PM
19-MAR-12 04.00.13.387316000 PM
19-MAR-12 04.04.45.168361000 PM
19-MAR-12 03.54.32.595348000 PM
27-MAR-12 10.28.14.797580000 AM
28-MAR-12 12.28.02.652969000 AM
27-MAR-12 07.28.02.828746000 PM
Run Code Online (Sandbox Code Playgroud)
输出应该是
19-MAR-12 03.53.38.189606000 PM
19-MAR-12 03.54.32.595348000 PM
19-MAR-12 03.56.27.933365000 PM
19-MAR-12 04.00.13.387316000 PM
19-MAR-12 04.04.45.168361000 PM
27-MAR-12 10.28.14.797580000 AM
27-MAR-12 07.28.02.828746000 PM
28-MAR-12 12.28.02.652969000 AM
09-APR-12 04.08.43.632279000 AM
Run Code Online (Sandbox Code Playgroud)
我已经尝试使用sort命令来命令日期(将日期字段作为字符串),但它没有给出正确的输出.