在Python 3中用数学符号连接字符串

时间:2015-07-14 11:57:50

标签: python string dictionary concatenation

我为人们制作了一本词典。这样的名字:

names = {"first": , "second": , "third":}

我想要做的是调用每个名称并将它们组合成一个字符串,用加号分隔。以下是一种繁琐的方式:

str(names["first"]) + "+" + str(names["second"]) + "+" + str(names["third"])

此行来自我正在尝试创建的较大模块。为了简单起见,我试图遵循,但导致语法错误:

str(names["first"] "%+d" + names["second"] "%+d" + names["third"])

有没有办法简化上述内容以便打印:

  

姓名+ secondname + thirdname

2 个答案:

答案 0 :(得分:2)

在python 2中你必须使用稍微hacky

  ` 
     <LinearLayout

     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:background="@drawable/back1"
     android:orientation="vertical">

    <TextView

     android:id="@+id/textView2"
     android:layout_width="match_parent"
     android:layout_height="60dp"
     android:layout_weight="0.00"
     android:background="@drawable/box"
     android:gravity="center_vertical"
     android:text="Enter Covers and Guest Type"
     android:textAppearance="?android:attr/textAppearanceLarge" />

   <EditText

    android:id="@+id/et_covers"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="4dp"
    android:layout_marginLeft="4dp"
    android:layout_marginRight="4dp"
    android:layout_marginTop="35dp"
    android:fontFamily="sans-serif"
    android:hint="Covers"
    android:inputType="number" />

   <TextView

    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="10dp"
    android:layout_marginTop="30dp"
    android:fontFamily="sans-serif"
    android:text="Staying Guest...?"
    android:textAppearance="?android:attr/textAppearanceMedium" />

 <LinearLayout

    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="15dp" >

    <CheckBox
        android:id="@+id/checkYes"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="50dp"
        android:text="YES" />

    <CheckBox
        android:id="@+id/checkNo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="75dp"
        android:text="NO" />

 </LinearLayout>
 </LinearLayout> `

然而,正如GingerPlusPlus指出的那样,在python 3中你可以远离这个"{first}+{second}+{third}".format(**names) 诡计,而是使用format_map

**kwargs

答案 1 :(得分:1)

如果您可以使用namedtuple代替dict来存储名称,我建议:

'+'.join(map(str, names))