Получится список словарей, в которых значения ID соответствуют строкам из списка ID, а значение Position у каждого словаря минимально среди других словарей из data с аналогичной строкой ID.
>>> slst = ['c_gsh_t.Srte6f:tesrs.o/sg', 'g3.erSi3th:12l9PgPr/iit/m', '//aRue-fatriR_teot-9tn_s-', '3/em-r0fninrre-I/rhefrfDe'] >>> >>> dlst = [{'Position': '8', 'ID': '//aRue-fatriR_teot-9tn_s-', 'Draw': '1'}, {'Position': '1', 'ID': '//aRue-fatriR_teot-9tn_s-', 'Draw': '6'}, {'Position': '2', 'ID': '//aRue-fatriR_teot-9tn_s-', 'Draw': '2'}, {'Position': '3', 'ID': '//aRue-fatriR_teot-9tn_s-', 'Draw': '4'}, {'Position': '4', 'ID': '//aRue-fatriR_teot-9tn_s-', 'Draw': '7'}, {'Position': '5', 'ID': '//aRue-fatriR_teot-9tn_s-', 'Draw': '5'}, {'Position': '6', 'ID': '//aRue-fatriR_teot-9tn_s-', 'Draw': '3'}, {'Position': '7', 'ID': '//aRue-fatriR_teot-9tn_s-', 'Draw': '8'}, {'Position': '9', 'ID': '//aRue-fatriR_teot-9tn_s-', 'Draw': '9'}, {'Position': '4', 'ID': 'c_gsh_t.Srte6f:tesrs.o/sg', 'Draw': '5'}, {'Position': '2', 'ID': 'c_gsh_t.Srte6f:tesrs.o/sg', 'Draw': '2'}, {'Position': '1', 'ID': 'c_gsh_t.Srte6f:tesrs.o/sg', 'Draw': '3'}, {'Position': '5', 'ID': 'c_gsh_t.Srte6f:tesrs.o/sg', 'Draw': '4'}, {'Position': '6', 'ID': 'c_gsh_t.Srte6f:tesrs.o/sg', 'Draw': '1'}, {'Position': '3', 'ID': 'c_gsh_t.Srte6f:tesrs.o/sg', 'Draw': '6'}, {'Position': '3', 'ID': '3/em-r0fninrre-I/rhefrfDe', 'Draw': '3'}, {'Position': '1', 'ID': '3/em-r0fninrre-I/rhefrfDe', 'Draw': '1'}, {'Position': '2', 'ID': '3/em-r0fninrre-I/rhefrfDe', 'Draw': '2'}, {'Position': '4', 'ID': '3/em-r0fninrre-I/rhefrfDe', 'Draw': '4'}, {'Position': '3', 'ID': 'g3.erSi3th:12l9PgPr/iit/m', 'Draw': '5'}, {'Position': '1', 'ID': 'g3.erSi3th:12l9PgPr/iit/m', 'Draw': '3'}, {'Position': '2', 'ID': 'g3.erSi3th:12l9PgPr/iit/m', 'Draw': '1'}, {'Position': '6', 'ID': 'g3.erSi3th:12l9PgPr/iit/m', 'Draw': '2'}, {'Position': '5', 'ID': 'g3.erSi3th:12l9PgPr/iit/m', 'Draw': '4'}, {'Position': '4', 'ID': 'g3.erSi3th:12l9PgPr/iit/m', 'Draw': '6'}] >>> >>> out = [min((d for d in dlst if d['ID'] == s), ... key=lambda i: int(i['Position'])) ... for s in slst] >>> out [{'Draw': '3', 'Position': '1', 'ID': 'c_gsh_t.Srte6f:tesrs.o/sg'}, {'Draw': '3', 'Position': '1', 'ID': 'g3.erSi3th:12l9PgPr/iit/m'}, {'Draw': '6', 'Position': '1', 'ID': '//aRue-fatriR_teot-9tn_s-'}, {'Draw': '1', 'Position': '1', 'ID': '3/em-r0fninrre-I/rhefrfDe'}] >>>
Если строки нет в словарях, это породит иключение. Ну, я так понял, тебе и не надо проверять это.
