如何访问列表的所有元素(由字典组成)?

时间:2019-03-07 19:53:57

标签: python python-2.7 jupyter-notebook plotly

我有两个变量,它们是由字典组成的列表; a和b,它们将始终具有相同数量的元素。

对于3D图形,我从中创建了另一个字典。当我知道元素的数量时,这些代码字就可以了;我说有3个例子。

fig = dict( data=[a[0],a[1],a[2],b[0],b[1],b[2]], layout=layout )

问题是我通常不知道a和b中有多少个元素。在一般情况下,我似乎无法弄清楚如何正确地迭代或循环以复制上面的代码。

目标是针对我不知道a和b中元素数量的一般情况复制上面的代码。

感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

这应该有效:

fig = dict( data=a + b, layout=layout )

答案 1 :(得分:0)

这应该可以完成工作:

export default class Welcome extends React.Component {
  constructor (props) {
    super(props)
    this.state = {
      state: 'PENDING',
      selectedFile: null
    }
    this.handleClick = this.handleClick.bind(this)
    this.post = this.post.bind(this)
  }

  handleClick () {
    if (this.state.state === 'PENDING') {
      this.refs.fileUploader.click()
    } else {
      cancelPost()
      this.setState({ state: 'PENDING' })
    }
  }

  handleChange (selectorFiles) {
    if (selectorFiles.length === 0) return
    console.log(selectorFiles)
    this.post(selectorFiles[0])
  }

  post (file) {
    // set screen to loading
    this.setState({
      state: 'PROCESSING',
      selectedFile: file
    })

    // set up body
    const data = new FormData()
    data.append('file', file)

    // pass in header, body, then callback
    processPost(data,
      resp => {
        console.log(resp.data)
        this.props.successfulPost(file, URL.createObjectURL(file), resp.data.boardTranscription, resp.data.audioTranscription)
      },
      error => {
        // if there is an error, log it and reset state
        console.log(error)
        this.setState({ state: 'PENDING' })
      })
  }

  render () {
    var jumboClass = classNames({
      'jumbotron col-8 offset-2 light-pink text-center': true,
      'jumboProcessing': this.state.state === 'PROCESSING'
    })

    var input
    var loading
    if (this.state.state === 'PROCESSING') {
      input = null
      loading = (
        <div>
          <div className="spinner-border" role="status">
            <span className="sr-only">Loading...</span>
          </div>
          <p>processing {this.state.selectedFile.name} ...</p>
          <button className={'btn btn-outline-light'} onClick={this.handleChange('')}>Cancel</button>
        </div>
      )
    } else {
      input = (
        <React.Fragment>
          <br></br>
          <button
            className={'btn-light btn-lg'}
            onClick={this.handleClick}
          >Upload Video</button>
          <input id="file" ref="fileUploader" type="file" accept='video/*'
            style={{ display: 'none' }}
            onChange={ (e) => this.handleChange(e.target.files) } />
        </React.Fragment>
      )
      loading = null
    }
    return (
      <div className={'row vertical-center'}>
        <div className={jumboClass}>
          <h2 className={'h2 font-size:10vw'}>Welcome to AutoNote!</h2>
          <h6 className={'h6 font-size:5vw'}>Upload a video to generate a linked transcription.</h6>
          {input}
          <br></br>
          {loading}
        </div>
      </div>)
  }
}

Welcome.propsType = {
  successfulPost: PropTypes.function
}

在两个列表之间使用时,fig = dict(data=a + b, layout=layout) 运算符将连接操作数。

例如:

+

答案 2 :(得分:0)

您可以链接两个列表。比通过串联创建新列表更节省时间:

var intersection = new Set([...set1].filter(x => set2.has(x)));

输出:

from itertools import chain

a = [1, 2, 3]
b = [4, 5, 6]

for i in chain(a, b):
    print(i)