【问题标题】:User List to Remove keys from Dictionary从字典中删除键的用户列表
【发布时间】:2014-01-23 09:32:18
【问题描述】:

让用户能够输入列表(或单数)数字以从字典中删除字符串键条目的最佳方法是什么?

到目前为止,这就是我所在的位置。

我的字典要从中删除值(字典是生成的,所以会有所不同)。

d = {'Seven': 22, 'Six': 0, 'Three': 35, 'Two': 0, 'Four': 45, 'Five': 34, 'Eight': 0}

1) 那么如何获取输入是我的第一个查询。这是我的尝试,但失败了。

>>> s = raw_input('1 2 3 4')
1 2 3 4
>>> numbers = map(str, s.split())
>>> numbers
[]

>>> s = raw_input('1 2 3 4')
1 2 3 4
>>> numbers = map(int, s.split())
>>> numbers
[]

2) 我如何将整数转换为单词形式?这里的范围是有限的,每个字典永远不会超过 20 个条目。 所以我最初的想法是创建一个密钥来解释信息。

e = {'One': 1, 'Two': 2, 'Three': 3, 'Four': 4}

这并不像预期的那样只删除一个条目。

>>> e = {'One': 1, 'Two': 2, 'Three': 3, 'Four': 4}
>>> {k:v for k,v in e.items() if v!=(1 and 3)}
{'Four': 4, 'Two': 2, 'One': 1}

我的意图是从 d 而不是 e 中删除值。它也不实用,因为我不知道用户将输入多少条目,所以使用“和”语句似乎是错误的。

【问题讨论】:

    标签: python dictionary user-input


    【解决方案1】:

    首先raw_input的参数只是为了展示。您需要自己输入:

    >>> s = raw_input("Enter a sequence of number: ")
    Enter a sequence of number: 1 2 3 4
    >>> print s
    1 2 3 4
    

    现在,您可以使用列表来映射它:

    m = ['1':'One', '2':'Two', '3':'Three', .., '10':'Ten']
    

    编辑下面是如何转换它:

    e = [v for k, v in m.items() if k in s]
    

    第三,字典解析(或一般的“理解”)并不是要修改现有对象,而是要创建一个新对象。你能得到的最接近的方法是让它像一个过滤器一样,并将结果重新分配回d

    d = {k:v for k, v in d.items() if k not in e}
    

    【讨论】:

    • 您是如何将用户输入的 s 转换为 e 的?
    • @sayth 通过一些更改更新了我的答案。
    • 这似乎不起作用 >>> s = raw_input("Enter Numbers: ") Enter Numbers: 1 2 3 4 >>> s '1 2 3 4' >>> numbers = map(int, s.split()) >>> numbers [1, 2, 3, 4] >>> m = ['一', '二', '三', '四', '五' , '六', '七', '八'] >>> e = [i for i in m if i in s] >>> e [] >>> e = [i for i in m if i in numbers ] >>> e []
    • @sayth 我的错。等一下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-14
    • 1970-01-01
    • 1970-01-01
    • 2010-11-17
    相关资源
    最近更新 更多