Bog*_*ota 0 python dictionary list python-3.x
我有一个列表:
my_list = ["10", "12", "32", "23"]
Run Code Online (Sandbox Code Playgroud)
和字典:
my_dict = {
'one': {'index': 0, 'sec_key': 'AB', 'id': '10'},
'two': {'index': 0, 'sec_key': 'CD', 'id': '12'},
'three': {'index': 0, 'sec_key': 'EF', 'id': '32'}
}
Run Code Online (Sandbox Code Playgroud)
我想保留一个字典,说 final_dict,只有当 id 出现在 my_list 中时,它才会包含 my_dict 的内容。我试图通过以下方式做到这一点:
sf_dict = dict()
for list_id in my_list:
for key, value in my_dict.items():
if list_id == value['id']:
print("Values : {} {} {}".format(value['index'], value['sec_key'], value['id']))
sf_dict[key] = key
sf_dict[key]['index'] = value['index']
sf_dict[key]['sec_key'] = value['sec_key']
sf_dict[key]['id'] = value['id']
print(sf_dict)
Run Code Online (Sandbox Code Playgroud)
我能够打印这些值,但是由于以下错误,这些值的分配失败了:
TypeError: 'str' object does not support item assignment
Run Code Online (Sandbox Code Playgroud)
我哪里出错了?
您可以使用字典理解来遍历您的my_dict并检查存储在的值id是否在您的列表中。
my_list = ["10", "12", "32", "23"]
my_dict = {
'one': {'index': 0, 'sec_key': 'AB', 'id': '10'},
'two': {'index': 0, 'sec_key': 'CD', 'id': '12'},
'three': {'index': 0, 'sec_key': 'EF', 'id': '32'}
}
result = {key:value for key, value in my_dict.items() if value['id'] in my_list}
#{'one': {'index': 0, 'sec_key': 'AB', 'id': '10'}, 'two': {'index': 0, 'sec_key': 'CD', 'id': '12'}, 'three': {'index': 0, 'sec_key': 'EF', 'id': '32'}}
my_list = ["10"]
#{'one': {'index': 0, 'sec_key': 'AB', 'id': '10'}}
Run Code Online (Sandbox Code Playgroud)