替换字典的空值python

时间:2016-08-05 16:59:45

标签: python dictionary

首先,我正在修改另一个人的代码。

我正在尝试打印对应于 [HttpGet] [GenerateAntiforgeryTokenCookieForAjax] public IActionResult Create() { return View(); } [HttpPost] [ValidateAntiForgeryToken] public async Task<IActionResult> Create(Product product) { 的字典值,如下所示:

key

一切正常,但有些字段只打印双引号,如print (map(str, dict[key])),我在这里要完成的,就是替换单引号['some_value', '', 'other_value', etc...],与''

我的方法一开始就是这样做:n/a,但我收到了print (map(str.replace("\'\'", "n/a"), dict[key]))消息:TypeError

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:0)

尝试使用

print([k if k else "n/a" for k in map(str, dict[key])])

答案 1 :(得分:0)

map函数需要func和iterable

public class TaskDbHelper extends SQLiteOpenHelper {

    public TaskDbHelper(Context context) {
        super(context, TaskContract.DB_NAME, null, TaskContract.DB_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String createTable = "CREATE TABLE " + TaskContract.TaskEntry.TABLE + " ( " +
                TaskContract.TaskEntry._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                TaskContract.TaskEntry.COL_TASK_TITLE + " TEXT NOT NULL," +
                TaskContract.TaskEntry.COL_TASK_DATE + "TEXT NOT NULL," +
                TaskContract.TaskEntry.COL_TASK_DESCRIPTION + "TEXT NOT NULL," +
                TaskContract.TaskEntry.COL_TASK_TIME + "TEXT NOT NULL; )";

        db.execSQL(createTable);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + TaskContract.TaskEntry.TABLE);
        onCreate(db);
    }}

作为列表的值:

data = { '':'',1:'a'}
print (map( lambda x: x if x else 'n/a', data.values()))
['n/a', 'a']

答案 2 :(得分:0)

你应该只是扩展到for循环并写:

for value in dict.values():
    if value == "":
        print("n/a")
    else:
        print(str(value))

答案 3 :(得分:0)

您可以在不使用map()的情况下以更简单的方式解决问题。只需使用list(),就可以循环遍历字符串的每个字符(diz [key]),然后根据需要用“n / a”字符串替换空格。

diz[key] = 'a val'
[w.replace(' ', 'n/a') for w in list(diz[key])]
>> ['a', 'n/a', 'v', 'a', 'l']