想要输出嵌套的字典值

时间:2013-11-09 05:57:10

标签: python

我在python中比较新。我正在使用字典。在我的字典中有两个列表值插入如下,

speed = ['20','30','25','50','40']
time = ['10','11','12','13','14']
dic = {'name':'Finder','details':'{ time : speed }'}

现在我只想得到那样的输出,

10:20
11:30
12:25
13:50
14:40
与之相关的

    时间:速度 因为我写了一个就像那样的for循环,

for k,i in dic.items()
     print(k + ":" + i)

执行代码后,我得到一个类似的错误,

unhashable type list

是嵌套字典的错误?我的另一个问题是,我写的for循环,它是否能够获得嵌套字典值的输出?

请帮我解决这些问题。

3 个答案:

答案 0 :(得分:2)

您不能将列表用作词典键。

>>> speed = ['20','30','25','50','40']
>>> time = ['10','11','12','13','14']
>>> {time: speed}
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'

将列表转换为元组以将其用作密钥。

>>> {tuple(time): speed}
{('10', '11', '12', '13', '14'): ['20', '30', '25', '50', '40']}

不需要使用字典来获得所需的输出。

使用zip

>>> speed = ['20','30','25','50','40']
>>> time = ['10','11','12','13','14']
>>> for t, s in zip(time, speed):
...     print('{}:{}'.format(t, s))
...
10:20
11:30
12:25
13:50
14:40

答案 1 :(得分:1)

好吧,你可以使用词典理解,并使用zip来组合这两者。您遇到的问题是,您使用list作为字典键,这是不可能的,因为list不可用。所以你的例子:

speed = ['20', '30', '25', '50', '40']
time = ['10', '11', '12', '13', '14']

for key, value in zip(time, speed):
    print key, ":", value


print

# Or you could have a dictionary comprehension, to make it
d = {key: value for key, value in zip(time, speed)}

for key, value in d.items():
    print key, ":", value

输出

10 : 20
11 : 30
12 : 25
13 : 50
14 : 40

11 : 30
10 : 20
13 : 50
12 : 25
14 : 40

答案 2 :(得分:1)

speed = ['20','30','25','50','40']
time = ['10','11','12','13','14']
dic = {'name':'Finder','details':'{ time : speed }'}

l1,l2 = [locals()[x.strip("{} ")] 
        for x in dic['details'].split(":")]

for p in zip(l1, l2):
    print ":".join(p)

给出:

10:20
11:30
12:25
13:50
14:40