如何对嵌套的字符串元素进行排序

时间:2020-01-27 21:22:52

标签: python-3.x

我想对元素对重新排序,然后将其重新排列为三元组,最后将三元组重新排序。

例如-我想要以下内容(我知道这行不通,但不知道如何写):

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'))] 

1 个答案:

答案 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)
相关问题