我有这种类型的字典
d={"Key":[name,value1,value2]}
我只需要在我的价值列表中输入数字。 如何删除姓名?
Thak you!
答案 0 :(得分:4)
import numbers
for key, values in d.iteritems():
d[key] = [x for x in values if isinstance(x, numbers.Number)]
自{2.6}以来numbers包可用。否则,您需要手动检查任何数字类型(int,float,long,complex)
iteritems()
已被删除,现在与3.x
items()
相同
答案 1 :(得分:2)
如果name
始终位于列表的开头,那么简单d['Key'][1:]
就足够了。否则,您可以使用以下内容:
[i for i in d['Key'] if i.isdigit()]
当然,我假设d['Key']
中的所有项都是字符串。否则,您无法使用isdigit()
。
答案 2 :(得分:-2)
In [1]: d = {'k1': [1,2,3,'a','b','c'], 'k2': ['e',4.3,'f',5.2]}
In [2]: for k,v in d.iteritems():
...: #This will keep only integers, but will fail on the floats since isdigit() return False on non-integers
...: d[k] = filter(lambda e: str(e).isdigit(), v)
...: #On the other hand, This will be a generic solution for any numeric type
...: d[k] = filter(lambda e: isinstance(e, numbers.Number), v)
...:
In [3]: d
Out[3]: {'k1': [1, 2, 3], 'k2': [4.3, 5.2]}