我正在使用字典理解来提取嵌套值。我有以下代码(作为示例):
d = {1: 'a', 2: 'b', 3: 'c'}
e = {4: 'd', 5: 'e', 6: 'f'}
f = {7: 'g', 8: 'h', 9: 'i'}
# stick them together into another dict
data_dict = {'one': d, 'two': e, 'three': f}
#say we're looking for the key 8
output = {outer_key: {inner_key: inner_value for inner_key, inner_value in outer_value.items() if inner_key == 8} for outer_key, outer_value in data_dict.items()}
output = {'one': {}, 'three': {8: 'h'}, 'two': {}}
我需要做些什么来获得JUST'三'及其价值?我不想返回空的比赛。
THX
答案 0 :(得分:5)
这样的事情:
>>> {k: {8: v[8]} for k, v in data_dict.items() if 8 in v}
{'three': {8: 'h'}}
答案 1 :(得分:0)
对162多行的理解太大了。这是传统方式:
#!/usr/local/cpython-3.3/bin/python
import pprint
d = {1: 'a', 2: 'b', 3: 'c'}
e = {4: 'd', 5: 'e', 6: 'f'}
f = {7: 'g', 8: 'h', 9: 'i'}
# stick them together into another dict
data_dict = {'one': d, 'two': e, 'three': f}
#say we're looking for the key 8
def just_8(dict_):
outer_result = {}
for outer_key, inner_dict in dict_.items():
inner_result = {}
if 8 in inner_dict:
inner_result[8] = inner_dict[8]
if inner_result:
outer_result[outer_key] = inner_result
return outer_result
output = {outer_key: {inner_key: inner_value for inner_key, inner_value in outer_value.items() if inner_key == 8} for outer_key, outer_value in data_dict.items()}
pprint.pprint(output)
output_just_8 = just_8(data_dict)
pprint.pprint(output_just_8)