询问用户并打印列表

Mac*_*iej 4 python list python-3.x

打印列表时遇到问题.例如,我有两个列表:

a = [1,2,3,4,5]
b = [6,7,8,9,10]
Run Code Online (Sandbox Code Playgroud)

现在我想要求用户输入列表名称,然后打印该列表.

name = input("Write a list name")
Run Code Online (Sandbox Code Playgroud)

用户输入 "a"

for x in name:
    print(x)
Run Code Online (Sandbox Code Playgroud)

但它不起作用(不打印列表"a").你可以帮帮我吗?

更多信息:

我有一本字典:

poland = {"poznan": 86470,
          "warszawa": 86484,
          "sopot": 95266}
Run Code Online (Sandbox Code Playgroud)

并列出:

poznan = [1711505, 163780, 932461, 1164703]

warszawa = [1503333, 93311, 93181, 93268, 106958, 106956, 127649, 106801, 107386, 93245, 154078, 107032]

sopot = [228481, 164126, 922891]
Run Code Online (Sandbox Code Playgroud)

现在如果用户写"poznan"我想从字典中将波兹南的ID分配给变量"city_id",然后打印名为"poznan"的列表

Reu*_*ani 11

您需要将列表映射到字符串,这是用户可以输入的内容.

所以使用字典:

lists_dict = {
    'a': [1,2,3,4,5]
    'b': [6,7,8,9,10]
}

key = input("Write a list name")

print lists_dict[key]
Run Code Online (Sandbox Code Playgroud)

编辑:

您的字典应如下所示:

poland = {
    "poznan": {"name": 86470, "lst": [1711505, 163780, 932461, 1164703]},
    "warszawa": {"name": 86484, "lst": [1503333, 93311, 93181, 93268, 106958, 106956, 127649, 106801, 107386, 93245, 154078, 107032]},
    "sopot": {"name": 95266, "lst": [228481, 164126, 922891]}
}
Run Code Online (Sandbox Code Playgroud)

访问您的列表应该像这样:

key = input("Write a list name")
# print the list under 'lst' for the dictionary under 'key'
# print poland[key]["lst"]
# EDIT: python 3's print a function, thanks @Ffisegydd:
print(poland[key]["lst"])
Run Code Online (Sandbox Code Playgroud)

  • 就我的世界观而言,这是*正确的方式,请参阅其他方式的其他答案.:)显示更忠实的代码示例,也许我们可以解决它. (4认同)

tas*_*oor 7

你可以globals()像这样使用字典 print(globals()[name]).input()返回一个名称,因此也不需要使用循环.

>>> a = [1,2,3,4,5]
>>> b = [6,7,8,9,10]
>>> name = input("Write a list name ")
Write a list name a
>>> globals()[name]
[1, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)

OP编辑后:

>>> poland = {"poznan": 86470,
...           "warszawa": 86484,
...           "sopot": 95266}
>>> poznan = [1711505, 163780, 932461, 1164703]
>>> warszawa = [1503333, 93311, 93181, 93268, 106958, 106956, 127649, 106801, 107386, 93245, 154078, 107032]
>>> sopot = [228481, 164126, 922891]
>>> name = input("Enter name: ")
Enter name: poznan
>>> city_id = poland[name]
>>> city_id
86470
>>> globals()[name]
[1711505, 163780, 932461, 1164703]
>>> 
Run Code Online (Sandbox Code Playgroud)

  • python2中的输入与python3中的输入非常不同,这就是为什么Aerofil得到错误`TypeError:unhashable type:'list' (2认同)