我想对元素对重新排序,然后将其重新排列为三元组,最后将三元组重新排序。
例如-我想要以下内容(我知道这行不通,但不知道如何写):
old_x = [(('ABC', '123'), ('XYZ', 'ABC'), ('XYZ', '123')),(('ABC', '123'), ('DEF', 'ABC'), ('DEF', '123'))]
new_x = sort(old_x)
重新排序为:
new_x = [(('123', 'ABC'), ('123', 'DEF'), ('ABC', 'DEF')),(('123', 'ABC'), ('123', 'XYZ'), ('ABC', 'XYZ'))]
答案 0 :(得分:0)
要获取新的排序列表,您必须首先在子列表中反转元组,对子列表进行排序,然后对整个列表进行排序:
import React, { useState } from "react";
import CharacterCard from "./CharacterCard";
import CharacterList from "./CharacterList";
export default function SearchForm(props) {
console.log(props.data.map((e) => e.name));
let hi = []
props.data.map((e) => hi.push(e.name))
const [search, setSearch] = useState('');
const check = () => {
if(search === ''){
return <CharacterCard data={props.data} />
} else if (hi.indexOf(search) === -1 ){
return <CharacterCard data={props.data} />
} else {
return <h1>{I want this to be anything that matches the input bot value}</h1>
}
}
let handleChange =(e) => {
setSearch(e.target.value)
}
return (
<section className="search-form">
<input type="text" onChange={handleChange} value={search} />
{check()}
</section>
);
}
打印:
old_x = [(('ABC', '123'), ('XYZ', 'ABC'), ('XYZ', '123')),(('ABC', '123'), ('DEF', 'ABC'), ('DEF', '123'))]
new_x = sorted([sorted(tuple(val[::-1] for val in subl)) for subl in old_x])
print(new_x)