List 在Dart中作为地图的值列出

List 在Dart中作为地图的值列出,list,maps,dart,List,Maps,Dart,我想创建一个成员地图,但每个成员都有3个属性:名字、姓氏和用户名。我怎样才能像列表一样创建,但有一个映射 所以我想要一些类似的东西: var membres= {['lastname': 'Bonneau', 'firstname': 'Pierre', 'username': 'mariobross'], ['lastname': 'Hamel', 'firstname': 'Al

我想创建一个成员地图,但每个成员都有3个属性:名字、姓氏和用户名。我怎样才能像列表一样创建,但有一个映射

所以我想要一些类似的东西:

var membres= {['lastname': 'Bonneau',
              'firstname': 'Pierre',
              'username': 'mariobross'],
              ['lastname': 'Hamel',
               'firstname': 'Alex',
               'username': 'Queenlatifa'],
            };

正如你所知,这个代码不起作用。但是它很好地解释了我要做的事情。

如果我正确理解了你的意图,你想要一个地图列表。你所拥有的是正确的,只是你把
[
{
搞混了。以下方法有效:

var membres = [
          {'lastname': 'Bonneau',
           'firstname': 'Pierre',
           'username': 'mariobross'},
          {'lastname': 'Hamel',
           'firstname': 'Alex',
           'username': 'Queenlatifa'}
        ];
例如,要获取所有用户名的列表:

print(membres.map((v) => v['username']));

如果我正确理解您的意图,您希望有一个地图列表。您所拥有的是正确的,只是您混淆了
[
{
。以下操作有效:

var membres = [
          {'lastname': 'Bonneau',
           'firstname': 'Pierre',
           'username': 'mariobross'},
          {'lastname': 'Hamel',
           'firstname': 'Alex',
           'username': 'Queenlatifa'}
        ];
例如,要获取所有用户名的列表:

print(membres.map((v) => v['username']));

我认为你混淆了这两个概念

阅读本语言简介:

列表是元素列表,可以用缩写
[…]
语法表示:

var list=[1,2,“foo”,3,新的Date.now(),4];
然而,地图可以用花括号速记语法表示:

var={//映射文字
//关键值
‘第一’:‘鹧鸪’,
“第二个”:“斑鸠”,
“第五个”:“金戒指”
};
因此,让我们修改您的代码以工作:

var成员=[
{
“lastname”:“Bonneau”,
“名字”:“皮埃尔”,
“用户名”:“mariobross”
},
{
“lastname”:“Hamel”,
“名字”:“亚历克斯”,
“用户名”:“Queenlatifa”
}
];
例如,您可以按如下方式打印信息:

members.forEach((e){
印刷品(e['firstname']);
});

我认为您混淆了这两种结构

阅读本语言简介:

列表是元素列表,可以用缩写
[…]
语法表示:

var list=[1,2,“foo”,3,新的Date.now(),4];
然而,地图可以用花括号速记语法表示:

var={//映射文字
//关键值
‘第一’:‘鹧鸪’,
“第二个”:“斑鸠”,
“第五个”:“金戒指”
};
因此,让我们修改您的代码以工作:

var成员=[
{
“lastname”:“Bonneau”,
“名字”:“皮埃尔”,
“用户名”:“mariobross”
},
{
“lastname”:“Hamel”,
“名字”:“亚历克斯”,
“用户名”:“Queenlatifa”
}
];
例如,您可以按如下方式打印信息:

members.forEach((e){
印刷品(e['firstname']);
});
你是说像这样

// FirstName => LastName => Value
var lookup = new Map<String, Map<String, String>>();

// get / set values like this
void setValue(String firstName, String lastName, String value) {
   if (!lookUp.containsKey(firstName)) 
       lookUp[firstName] = new Map<String, String>();
   lookUp[firstName][lastName] = value;
}

String getValue(String firstName, String lastName) {
   if (!lookUp.containsKey(firstName)) return "";
   return lookUp[firstName][lastName];
}
//FirstName=>LastName=>Value
var lookup=newmap();
//获取/设置如下所示的值
void setValue(字符串名、字符串名、字符串值){
如果(!lookUp.containsKey(firstName))
lookUp[firstName]=新映射();
查找[firstName][lastName]=值;
}
String getValue(String firstName、String lastName){
如果(!lookUp.containsKey(firstName))返回“”;
返回查找[firstName][lastName];
}
你是说像这样

// FirstName => LastName => Value
var lookup = new Map<String, Map<String, String>>();

// get / set values like this
void setValue(String firstName, String lastName, String value) {
   if (!lookUp.containsKey(firstName)) 
       lookUp[firstName] = new Map<String, String>();
   lookUp[firstName][lastName] = value;
}

String getValue(String firstName, String lastName) {
   if (!lookUp.containsKey(firstName)) return "";
   return lookUp[firstName][lastName];
}
//FirstName=>LastName=>Value
var lookup=newmap();
//获取/设置如下所示的值
void setValue(字符串名、字符串名、字符串值){
如果(!lookUp.containsKey(firstName))
lookUp[firstName]=新映射();
查找[firstName][lastName]=值;
}
String getValue(String firstName、String lastName){
如果(!lookUp.containsKey(firstName))返回“”;
返回查找[firstName][lastName];
}

如果您真的不需要
映射
,那么使用类来改进代码的结构怎么样:

类成员{
字符串名;
字符串lastname;
字符串用户名;
成员(this.firstname、this.lastname、this.username);
}
main(){
最终成员=新列表();
增加(新成员('Pierre','Bonneau','mariobross');
成员。添加(新成员(“Alex”、“Hamel”、“Queenlatifa”);
//使用成员
}

如果您真的不需要
映射
,那么使用类来改进代码的结构怎么样:

类成员{
字符串名;
字符串lastname;
字符串用户名;
成员(this.firstname、this.lastname、this.username);
}
main(){
最终成员=新列表();
增加(新成员('Pierre','Bonneau','mariobross');
成员。添加(新成员(“Alex”、“Hamel”、“Queenlatifa”);
//使用成员
}

首先,您需要创建一个值为list的映射。别忘了初始化它 然后,如果您想填充它,您首先需要使用内置函数,如dart中的
putIfAbsent
,在列表中添加第一个对象,然后使用
update
在列表中添加项目。因此,您将需要两个数组。首先放置元素,然后在列表中添加具有相同键的元素。此外,您还可以使用try-catch来确定键是否在一个循环中,是存在还是不存在

for (var item in days) {
    var date_time = DateTime.parse(item["date"] + " 00:00:00");
    _events[date_time] = _events.putIfAbsent(
        date_time,
        () => [
              {
                "title": item["title"],
                "date": item["date"],
                "time": reUse.get_time_am_pm_format(item["time"]),
                "feature": item["feature"],
              }
            ]);
  }
  for (var item in days) {
    var date_time = DateTime.parse(item["date"] + " 00:00:00");
    _events[date_time] = _events.update(date_time, (value) {
      value.add({
        "title": item["title"],
        "date": item["date"],
        "time": reUse.get_time_am_pm_format(item["time"]),
        "feature": item["feature"],
      });
      return value;
    });
  }

首先,您需要创建一个值为list的映射。别忘了初始化它 然后,如果您想填充它,您首先需要使用内置函数,如dart中的
putIfAbsent
,在列表中添加第一个对象,然后使用
update
在列表中添加项目。因此,您将需要两个数组。首先放置元素,然后在列表中添加具有相同键的元素。此外,您还可以使用try-catch来确定键是否在一个循环中,是存在还是不存在

for (var item in days) {
    var date_time = DateTime.parse(item["date"] + " 00:00:00");
    _events[date_time] = _events.putIfAbsent(
        date_time,
        () => [
              {
                "title": item["title"],
                "date": item["date"],
                "time": reUse.get_time_am_pm_format(item["time"]),
                "feature": item["feature"],
              }
            ]);
  }
  for (var item in days) {
    var date_time = DateTime.parse(item["date"] + " 00:00:00");
    _events[date_time] = _events.update(date_time, (value) {
      value.add({
        "title": item["title"],
        "date": item["date"],
        "time": reUse.get_time_am_pm_format(item["time"]),
        "feature": item["feature"],
      });
      return value;
    });
  }