列表作为字典中的键

时间:2015-02-13 12:00:35

标签: python

我知道,我不能把列表作为Python中字典的关键字。 我需要字符串数组,对于每个字符串,我需要有一些值,我可以通过该字符串访问。 E.g

["string1" : ["string1.1","string1.2","string1.3"], "string2" :["string2.1","string2.2"]]

我需要遍历字符串(string1,string2),例如打印第二个sub_string(stringX.2),所以我得到了

>>"string1.2","string2.2"

这个问题的最佳解决方案是什么?

3 个答案:

答案 0 :(得分:0)

使用dict:

dictvalue = {"string1" : ["string1.1","string1.2","string1.3"], 
             "string2" : ["string2.1","string2.2"]}

您可以使用以下内容迭代键:

for key in dictvalue:
    print dictvalue[key][1:2]

或者直接迭代这些值,因为你似乎只对没有键的值感兴趣。

for value in dictvalue.values():
    print value[1:2]

(如果列表少于2个项目,使用[1:2]切片表示法可以保护我们。)

答案 1 :(得分:0)

假设你的字典是:

x = {'string2': ['substr2.1', 'substr2.2'], 'string1': ['substr1.1', 'substr1.2', 'substr1.3']}

你可以使用:

for key in x:
    print(x[key][1]

输出将是:

substr2.2
substr1.2

答案 2 :(得分:0)

如果您想要订购的密钥,请使用orderedDict。然后使用try / except迭代dict项目来捕获和indexError并在出现任何错误时打印密钥:

from collections import OrderedDict

od = OrderedDict((k,v) for k, v in (("string1", ["string1.1", "string1.2", "string1.3"]), ("string2", ["string2.1", "string2.2"])))

try:
    for k, v in od.items():
        print(k, v[1])
except IndexError as e:
    print("IndexError for key {}".format(k))
相关问题