Python字典长度不匹配

时间:2015-07-14 13:24:14

标签: python

我写了一个小测试脚本:

#!/usr/bin/env python

import pexpect
import re


List_dictionary = {
'b -c \\"select name,type,is_supported from algorithm where name = \\\'RSA\\\' and key_size=1024 \\"':'app \"algo -e -n RSA -ks 1024\"',

'b -c \\"select name,type,is_supported from algorithm where name = \\\'RSA\\\' and key_size=1024 \\"':'app \"algo -d -n RSA -ks 1024\"'
}

test_dict={
'a':1,
'b':2
}

for a,b in List_dictionary.items():
        print a
for a,b in test_dict.items():
        print a
print len(List_dictionary)
print len(test_dict)

我得到的输出是:

./test.py
b -c \"select name,type,is_supported from algorithm where name = \'RSA\' and key_size=1024 \"
a
b
1
2

为什么只有一个元素从List_dictionary中获取,并且它的长度为1.相反,据我所知,它应该是2。

1 个答案:

答案 0 :(得分:3)

这很容易。

字典的工作方式是key对中的每个key : value都是唯一的。 这意味着你的词典中的第二个键会替换第一个键,因为它们是相同的。

'b -c \\"... \\"'
'b -c \\"... \\"'

尝试更改一个字母,然后在开始时尝试'c -c`来试用它 另一个解决方案是为你的命令/字符串设置一个合适的密钥,并且(如下面提到的GWW)将你的命令放在一个列表中。请考虑以下事项:

List_dictionary = {
    'first' : ['b -c \\"select name,type,is_supported from algorithm where name = \\\'RSA\\\' and key_size=1024 \\"', 'app \"algo -e -n RSA -ks 1024\"'],
    'sendond' : ['b -c \\"select name,type,is_supported from algorithm where name = \\\'RSA\\\' and key_size=1024 \\"', 'app \"algo -d -n RSA -ks 1024\"']
}

这为您提供了独特的键,使整个字典更清晰 您甚至可以将密钥从first/second/重命名为algo -ealgo -d,因为密钥字段中允许使用空格。