我在 python3 中有一個串列,它由幾個子串列組成,每個子串列都有一個字串、一個計數整數和一個元組:
final =[ ['auto', 3, [1066, 1238, 1700]],
['conta', 3, [1286, 1495, 1550]],
['multidisciplinar', 3, [1301, 1428, 1451]],
['intradisciplinar', 3, [1302, 1508, 1559]],
['varia??es', 3, [1314, 1426, 1937]],
['alegoria', 3, [1339, 1376, 1630]],
['orquestra', 3, [1351, 1370, 1394]],
['exemplo', 3, [1372, 1741, 2092]],
['natureza', 3, [1480, 1533, 1737]],
['procedimentos', 3, [1552, 1782, 2008]],
['tema', 3, [1577, 1647, 1696]],
['acadêmico', 2, [3, 397]],
['adquirido', 2, [15, 850]],
['científico', 2, [22, 1764]],
['área', 2, [32, 1400]],
['facilmente', 2, [44, 496]],
['antigüidade', 2, [1837, 1885]],
['através', 2, [1853, 1880]],
['primeiros', 2, [1856, 1891]],
['complexidade', 2, [1869, 1943]],
['partir', 2, [1915, 2051]],
['elemento', 2, [1917, 1938]],
['água', 2, [1925, 1966]],
['ar', 2, [1926, 1965]],
['fogo', 2, [1928, 1967]],
['coisa', 2, [2029, 2038]],
['poderiam', 2, [2048, 2086]],
['diferen?as', 2, [2059, 2078]],
['entrou', 1, [1]],
['vocabulário', 1, [2]],
['usual', 1, [4]],
['timida', 1, [5]],
['mente', 1, [6]],
['tateando', 1, [7]] ]
如您所見,此串列對字串(第一個元素)進行排序,從高到低(第二個元素)計算它們的頻率,并計算字串元素出現的位置(第三個元素,元組)。基于此,我需要生成另外四個包含這些子串列的不同串列,即具有相同的結構,但元素的順序如下:
第一個串列,考慮到它們的頻率(第二個元素)和元組中第一個元素的最小值(第三個元素),字串(第一個元素)按降序排列。這表示字串的頻率較高且順序較低。已經提供。
第二個串列,考慮到它們的頻率(第二個元素)和元組中第一個元素的最大值(第三個元素),字串(第一個元素)按降序排列。這表示字串的更高頻率和更高階。
第三個串列,考慮到它們的頻率(第二個元素)和元組中第一個元素的最小值(第三個元素),字串(第一個元素)的順序逐漸增加。這表示字串的較低頻率和較低順序。
第四個串列,考慮到它們的頻率(第二個元素)和元組中第一個元素的最大值(第三個元素),字串(第一個元素)的順序越來越多。這表示字串的頻率較低且順序較高。
第一個串列 - 更高的頻率和更低的順序。
第二個串列 - 更高的頻率和更高的順序。
第三個串列 - 較低的頻率和較低的順序。
第四個串列 - 較低的頻率和較高的順序。
關于元組中元素順序的所有考慮僅適用于具有多個元素的元組。
我感覺到它可以做到的力量,但我已經嘗試了所有使用我能理解的串列、索引、熊貓和字典的方法,但我仍然不知道該怎么做。提前致謝。
uj5u.com熱心網友回復:
您可以對要排序的每個專案屬性使用 lambda 函式對串列進行排序。使用反向標志將從最高到最低排序。所以,建立你的第四個清單;
sorted(sorted(final, key=lambda x: x[2][0], reverse=True), key = lambda x: x[1])
編輯:
如果您沒有一點技巧,那么您可以使用一個排序呼叫 - 在這種情況下,排序都是從最小到最大的,但是要反轉它,您可以將搜索條件設為否定值。同樣,第四個串列是;
sorted(final, key=lambda x: (x[1], -x[2][0]))
uj5u.com熱心網友回復:
用于生成三個缺失串列的代碼變體是:
# Lower freq - High order
alt_1 = sorted(sorted(final, key=lambda x: x[2][0], reverse=True), key = lambda x: x[1])
# Higher freq - High order
alt_2 = sorted(sorted(final, key=lambda x: x[2][0], reverse=True), key = lambda x: x[1], reverse=True)
# Lower freq - Lower order
alt_3 = sorted(sorted(final, key=lambda x: x[2][0]), key = lambda x: x[1])
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/511856.html
