用户列表从词典中删除键

时间:2014-01-23 00:10:39

标签: python dictionary user-input

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

到目前为止,这就是我所在的地方。

我的词典删除了(字典生成因此会有所不同)。

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中删除值。它也不实用,因为我不知道用户将输入多少条目,因此使用'和'语句似乎是错误的。

1 个答案:

答案 0 :(得分:2)

首先,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}