我想从以下字典中提取值A, C, D和E(我不需要value_B,这是一个数字):
{'key1': [{'key_A': 'value_A', 'key_B': value_B},
{'key_A': 'value_C'},
{'key_A': 'value_D'},
{'key_A': 'value_E'}],
'key2': True}
然后我想把这些值连接成一个字符串,每个值之间有一个新的行。像这样:
string = ''
for value in values:
string += value + 'n'
或者这个:
string = ''
string = 'n'.join(values)
我想要的是这个:
string = 'value_A' + 'n' + 'value_C' + 'n' + 'value_D' + 'n' + 'value_E'
最好的方法是什么?我该怎么做呢?我甚至不知道从哪里开始。
虽然您可以在一行中完成此操作,但我建议将您的问题分解为更小的子问题。
my_string = 'n'.join(e['key_A'] for e in my_dict['key1'])
您有一个字典,其中一个键包含一个字典列表。您希望最终得到一个字符串,其中包含以'n'分隔的字典列表中每个字典的'key_A'的值。
对我来说,最明显的步骤是:
- 从父字典的'key1'中选择字典列表
- 从字典列表中收集key_A的值
- 用'n'分隔的字符串将这些值连接在一起
# Select the list of dicts from the parent dict
my_list_of_dicts = my_dict['key1']
# Select the 'key_A' value from each dict in the list
my_values = [e['key_A'] for e in my_list_of_dicts]
# Join the values together into a string separated by the 'n'
my_string = 'n'.join(my_values)
如果直到运行时才知道要使用哪个键,并且确信第一个键将是所需的键。您可以预先导出键并存储它,也可以为每个单独的字典派生键。
# Derive the key in advance
# Get the first key of the first dict stored in my_dict['key1']
my_key = list(my_dict['key1'][0].keys())[0]
my_string = 'n'.join(e[my_key] for e in my_dict['key1'])
# Derive the first key for every dict
my_string = 'n'.join(e[list(e.keys()[0])] for e in my_dict['key1'])