данный - словарь списков, которые содержат наборы. Как бы эффективный способ найти соответствующий ключ самого первого появления элемента в наборе? Это должно быть сделано для всех уникальных элементов, которые находятся в словаре. [] .
Положение набора в списке не имеет отношения. Только ключ представляет интерес. < /Li>
Словарь сортируется в порядке возрастания по его значению ключа. < /Li>
Словарь следует искать в порядке возрастания. Я прошу более эффективного способа. Более эффективные средства не наивно используют некоторые циклы, а применяют встроенные функции или питонические методы. Ответ будет заключаться в том, что для ключа 343 Этот элемент появляется первым в d . Это повторяется для всех значений в наборах d .
d={
100: [{406, 491, 440, 448},{590, 633, 560, 564, 651, 681}],
343: [{366, 412, 440}, {448, 491, 510}, {557, 560, 544, 564, 633, 681}],
423: [{440, 448, 491, 510, 544, 557, 564, 681}],
433: [{412, 440, 448, 491},{536, 544, 510, 557, 560, 564}],
493: [{1286, 1285, 1357}]
}
Что я попробовал
Это рабочее решение. Это наивно использует 3 петли. < /P>
first_appearance = {}
for key, sets in d.items():
for s in sets:
for element in s:
if element not in first_appearance:
first_appearance[element] = key
# Display the result
print("[element,key]")
for element, key in first_appearance.items():
print(f"[{element},{key}], ",end="")
< /code>
output: < /p>
[element,key]
[440,100], [491,100], [406,100], [448,100], [560,100], [633,100], [564,100], [681,100], [651,100], [590,100], [412,343], [366,343], [510,343], [544,343], [557,343], [536,433], [1285,493], [1357,493], [1286,493],
Подробнее здесь: https://stackoverflow.com/questions/795 ... ry-of-sets
Эффективный способ найти первое появление элемента в словаре наборов [закрыто] ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение