Python 3.x 我想用python打印这本词典

Python 3.x 我想用python打印这本词典,python-3.x,dictionary,Python 3.x,Dictionary,我想以字典格式打印15个条目,其中name作为键,dateofbirth(dob)作为值。我做错了什么? 徖 l = {} name = [(str, input().split()) for i in range(0, 15)] dob = [(int, input().split()) for i in range(0, 15)] print({name[i]:dob[i] for i in range(len(dob))}) 错误是: 回溯(最近一次呼叫最后一次): 文件“main.py

我想以字典格式打印15个条目,其中name作为键,dateofbirth(dob)作为值。我做错了什么? 徖

l = {}
name = [(str, input().split()) for i in range(0, 15)]
dob = [(int, input().split()) for i in range(0, 15)]
print({name[i]:dob[i] for i in range(len(dob))})
错误是:
回溯(最近一次呼叫最后一次):
文件“main.py”,第4行,在
打印({name[i]:dob[i]表示范围内的i(len(dob))})
文件“main.py”,第4行,在
打印({name[i]:dob[i]表示范围内的i(len(dob))})
TypeError:不可损坏的类型:“列表”
我会这样做(返回一个生成器):

如果希望它返回列表,请执行以下操作:

name = map(str, input().split())
dob = map(int, input().split())
print({n: d for n, d in zip(name, dob)})

问题不在print()函数中,而是在组成第一个列表的方式中:它不是提取名称,而是提供一个
(,'string')
元组,不能用作字典的键。“dob”变量也会发生同样的情况,但问题只存在于键

试着做:

name = list(map(str, input().split()))
dob = list(map(int, input().split()))
print({n: d for n, d in zip(name, dob)})

如果没有命令行输入,代码很难诊断。请为范围(0,15)内的i提供准确的输入。(str,input().split())这将获取15个(字符串)输入并将其拆分。这是我得到的。您提供的值是什么?但是当我试图从user.name=list(map(str,input().split())中获取15个输入时,为什么返回它的对象呢。那是故意的。
name = list(map(str, input().split()))
dob = list(map(int, input().split()))
print({n: d for n, d in zip(name, dob)})
name = [input() for i in range(0, 15)] #this takes and returns the input. no need to convert to string
dob = [int(input()) for i in range(0, 15)] #this takes an input and returns it's numeric value