我有一个python字典。只是为了给出上下文,我正在尝试编写自己的简单交叉验证单元。
基本上我想要的是获得除给定键之外的所有值。 并且根据输入,它返回字典中的所有值,除了已经给出的值。
因此,如果输入为2和5,那么输出值不具有键2和5的值?
答案 0 :(得分:32)
for key, value in your_dict.items():
if key not in your_blacklisted_set:
print value
美观是这个伪代码示例是有效的python代码。
它也可以表示为列表理解:
resultset = [value for key, value in your_dict.items() if key not in your_blacklisted_set]
答案 1 :(得分:8)
鉴于字典说
d = {
2: 2, 5: 16, 6: 5,
7: 6, 11: 17, 12: 9,
15: 18, 16: 1, 18: 16,
19: 17, 20: 10
}
然后,简单的理解示例将达到你想要的目标
[v for k,v in d.iteritems() if k not in (2,5)]
此示例列出了不使用键{2,5}
的所有值例如,上述理解的O / P是
[5, 6, 1, 17, 9, 18, 1, 16, 17, 10]
答案 2 :(得分:4)
keys = ['a', 'b']
a_dict = {'a':1, 'b':2, 'c':3, 'd':4}
[a_dict.pop(key) for key in keys]
弹出要丢弃的密钥后,a_dict将保留您所关注的密钥。
答案 3 :(得分:4)
如果您的目标是返回一个新的字典,其中包含除一个或几个以外的所有键/值,请使用以下命令:
SELECT * FROM books where id= '3' OR status='public'
其中exclude_keys = ['exclude', 'exclude2']
new_d = {k: d[k] for k in set(list(d.keys())) - set(exclude_keys)}
可以替换为(一个或多个)密钥,应排除在外。
答案 4 :(得分:2)
如下所示:
In [7]: d = dict((i,i+100) for i in xrange(10))
In [8]: d
Out[8]:
{0: 100,
1: 101,
2: 102,
3: 103,
4: 104,
5: 105,
6: 106,
7: 107,
8: 108,
9: 109}
In [9]: exc = set((2, 5))
In [10]: for k, v in d.items():
....: if k not in exc:
....: print v
....:
....:
100
101
103
104
106
107
108
109
答案 5 :(得分:2)
另外,作为使用集合的列表理解:
d = dict(zip(range(9),"abcdefghi"))
blacklisted = [2,5]
outputs = [d[k] for k in set(d.keys())-set(blacklisted)]
答案 6 :(得分:0)
使用异常处理
facebook_posts = [
{'Likes': 21, 'Comments': 2},
{'Likes': 13, 'Comments': 2, 'Shares': 1},
{'Likes': 33, 'Comments': 8, 'Shares': 3},
{'Comments': 4, 'Shares': 2},
{'Comments': 1, 'Shares': 1},
{'Likes': 19, 'Comments': 3}
]
total_likes = 0
for post in facebook_posts:
try:
total_likes = total_likes + post['Likes']
except KeyError:
pass
print(total_likes)
你也可以使用:
except KeyError: 'My Key'
但可能只适合一次性使用