首先,我正在修改另一个人的代码。
我正在尝试打印对应于 [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
我该如何解决这个问题?
答案 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']