Python 在字典中列为键
我知道,在Python中,我不能将列表作为键放在字典中。 我需要字符串数组,对于每个字符串,我需要有一些值,我可以通过该字符串访问这些值。 例如 我需要遍历字符串(string1,string2),例如打印第二个子字符串(stringX.2),这样我就可以Python 在字典中列为键,python,Python,我知道,在Python中,我不能将列表作为键放在字典中。 我需要字符串数组,对于每个字符串,我需要有一些值,我可以通过该字符串访问这些值。 例如 我需要遍历字符串(string1,string2),例如打印第二个子字符串(stringX.2),这样我就可以 >>"string1.2","string2.2" 这个问题的最佳解决方案是什么?使用dict: dictvalue = {"string1" : ["string1.1","string1.2","string1.3"],
>>"string1.2","string2.2"
这个问题的最佳解决方案是什么?使用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]
(使用
[1:2]
切片表示法可以在列表中的项目少于2项时保护我们。)假设您的词典是:
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
如果要订购钥匙,请使用orderedDict。然后,只要使用try/except对dict项进行迭代,以捕获和索引器,并在出现任何错误时打印密钥:
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))
你不是只想要一本字典吗{'string1':['string1.1',…],…}?列表不能是键,但可以是值。使用2d数组不是更好吗?您可以使用元组作为字典键,但似乎并不需要它们。OP的示例显示了不同长度的值-如果列表中的项少于2项,
value[1:2]
notation将返回一个空列表,value[1]
将引发索引器。如果要迭代dict中的键,只需迭代dict本身,无需调用keys()
。
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))