如果elif循环出错

时间:2018-04-18 00:04:09

标签: python

我有3列含有值,如果1的值是其中任何一对的两倍,则列表应附加索引。

0 1 2 3 A 1 2 3 G 2 3 4 K 1 1 2 T 1 1 1

结果应为[A,G,K]

我在下面的循环中遇到Key错误:

percentage = pd.concat([percent1, percent2, percent3], axis=1, join='inner')
percentage = percentage.reset_index()
AA= []
for i in range(0, len(percentage)):
    if percentage[1][i] == 2*percentage[2][i]:
        AA.append(percentage['index'][i])
    elif percentage[2][i] == 2*percentage[3][i]:
        AA.append(percentage['index'][i])
    elif percentage[1][i] == 2*percentage[3][i]:
        AA.append(percentage['index'][i])

2 个答案:

答案 0 :(得分:0)

您实际错误的原因是您在比较的右侧使用了第1,2和3列,但是您没有4列,只有3.所以,这一行:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.android.etihadflight.MainActivity">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/colorPrimary"
        android:minHeight="?attr/actionBarSize"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light">

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/etihad" />

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/fromad" />

        </LinearLayout>


        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="end">

            <View
                android:layout_width="15dp"
                android:layout_height="15dp" />

            <FrameLayout
                android:id="@+id/counterValuePanel"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="end|top">

                <TextView
                    android:id="@+id/count"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="end"
                    android:background="@drawable/rounded_corner"
                    android:gravity="center"
                    android:text="0"
                    android:textColor="#ffffff"
                    android:textSize="15sp"
                    android:textStyle="bold" />

                <ImageView
                    android:id="@+id/cart_icon"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical"
                    android:padding="10dp"
                    android:src="@drawable/cart" />

            </FrameLayout>

        </LinearLayout>

    </android.support.v7.widget.Toolbar>

    <android.support.design.widget.TabLayout
        android:id="@+id/tablayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/colorPrimary"
        android:minHeight="?attr/actionBarSize"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

    </android.support.design.widget.TabLayout>

    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="fill_parent">

    </android.support.v4.view.ViewPager>

</LinearLayout>

...会在表达式的elif percentage[1][i] == 2*percentage[3][i]: 部分引发KeyError(3)

不幸的是,我不知道如何解决这个问题,因为我无法弄清楚你的代码打算做什么,而你还没有解释它。

最明显的猜测是你想在右边使用第0,1和2列。但这只会给你一个空列表,而不是......三行列表,或者你想要的任何东西。并且,鉴于您在左侧使用的是第0,1和1列而不是0,1和2,我不确定猜测的首要位置是多么明显。

答案 1 :(得分:0)

错误是由列名称引起的。 concat函数保持列名不变,这个错误是由于那些列名相同。