我在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循环,它是否能够获得嵌套字典值的输出?
请帮我解决这些问题。
答案 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