【问题标题】:Ask user and print a list询问用户并打印列表
【发布时间】:2015-01-05 13:37:03
【问题描述】:

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

a = [1,2,3,4,5]
b = [6,7,8,9,10]

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

name = input("Write a list name")

用户输入"a"

for x in name:
    print(x)

但它不起作用(不打印列表“a”)。你能帮帮我吗?

更多信息:

我有一本字典:

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]

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

【问题讨论】:

    标签: python list python-3.x


    【解决方案1】:

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

    所以使用字典:

    lists_dict = {
        'a': [1,2,3,4,5]
        'b': [6,7,8,9,10]
    }
    
    key = input("Write a list name")
    
    print lists_dict[key]
    

    编辑:

    您的字典应如下所示:

    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]}
    }
    

    访问您的列表应该这样完成:

    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"])
    

    【讨论】:

    • 这是唯一的方法吗?在这种情况下我不能使用字典,因为我有其他代码无法使用它。
    • 根据我的世界观,这是正确的方式,其他方式请参见其他答案。 :) 展示一个更忠实的代码示例,也许我们可以修复它。
    • 好的,这里有更多信息:我有一本带有“name”和“id”值的字典。我向用户询问“姓名”,然后我从这本词典中打印“id”。我还想从这本词典中打印一个名称为“名称”的列表。我希望你明白我的意思。
    • 在您的问题中添加字典示例。这很容易解决。
    • “命名”变量的想法很困难。如果我说a = 1,然后说b = a,我的整数是命名为a 还是b?这就是为什么您应该按照 Reut 的建议使用字典。
    【解决方案2】:

    您可以使用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]
    

    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]
    >>> 
    

    【讨论】:

    • 给予TypeError: unhashable type: 'list'
    • @AerofoilKite,您没有在a 周围输入报价。这就是为什么会出现错误。请检查编辑。 OP 明确表示使用输入 "a" 和引号。
    • 你是如何在 python3 shell 中使用print globals()[name] 的?
    • @PadraicCunningham,我使用的是 2.x,但我想这是每个人都能理解的一个小改动。不管怎样,我也在解决这个问题。
    • python2 中的输入与 python3 中的输入非常不同,这就是 Aerofil 收到错误 TypeError: unhashable type: 'list' 的原因
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-04
    • 2011-04-05
    • 1970-01-01
    • 2011-02-28
    相关资源
    最近更新 更多