小编tri*_*jjj的帖子

从 Python 中的字典列表中创建以特定属性为键的新字典的简洁方法

我希望从字典列表中创建一个新字典,并将这些字典中的特定属性作为新键。

这是一个更好地概述概念的示例:

原来的

[
   {
      "id":"asdf1234",
      "firstname":"john",
      "lastname":"smith",
      "age":30
   },
   {
      "id":"sdfg2345",
      "firstname":"jane",
      "lastname":"doe",
      "age":25
   },
   {
      "id":"dfgh3456",
      "firstname":"billy",
      "lastname":"ericson",
      "age":35
   }
]
Run Code Online (Sandbox Code Playgroud)

变身

{
   "asdf1234":{
      "firstname":"john",
      "lastname":"smith",
      "age":30
   },
   "sdfg2345":{
      "firstname":"jane",
      "lastname":"doe",
      "age":25
   },
   "dfgh3456":{
      "firstname":"billy",
      "lastname":"ericson",
      "age":35
   }
}
Run Code Online (Sandbox Code Playgroud)

我知道这可以使用这个丑陋的代码来完成,我正在寻找一种更简洁优雅的方式来做到这一点。

[
   {
      "id":"asdf1234",
      "firstname":"john",
      "lastname":"smith",
      "age":30
   },
   {
      "id":"sdfg2345",
      "firstname":"jane",
      "lastname":"doe",
      "age":25
   },
   {
      "id":"dfgh3456",
      "firstname":"billy",
      "lastname":"ericson",
      "age":35
   }
]
Run Code Online (Sandbox Code Playgroud)

python dictionary

2
推荐指数
1
解决办法
44
查看次数

DateTime.TryParseExact()无法识别PM指示符,AM按预期工作

我正在编写一个程序来读取日志文件,并一路转换时间戳。当前,我正在使用它DateTime.TryParseExact()来快速分析时间戳,以确保一切正确。我遇到的问题是仅识别AM指示符,PM正常工作。我在以下代码段中隔离了该问题:

string format = "M/dd/yyyy H:mm:ss tt";

string teststringPM = "1/21/2019 3:25:32 PM";
string teststringAM = "1/21/2019 3:25:32 AM";

DateTime placeholderPM;
DateTime placeholderAM;

DateTime.TryParseExact(teststringPM, format, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out placeholderPM);
DateTime.TryParseExact(teststringAM, format, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out placeholderAM);

Console.WriteLine("placeholderPM:");
Console.WriteLine(placeholderPM.ToString());

Console.WriteLine("placeholderAM:");
Console.WriteLine(placeholderAM.ToString());
Run Code Online (Sandbox Code Playgroud)

输出结果如下:

placeholderPM:
1/1/0001 12:00:00 AM

placeholderAM:
1/21/2019 3:25:32 AM
Run Code Online (Sandbox Code Playgroud)

我们可以看到placeholderPM是默认的新datetime值。我尝试将IFormatProvider更改为en-US,但没有任何行为更改。

任何见解非常感谢!

c# datetime

1
推荐指数
1
解决办法
46
查看次数

标签 统计

c# ×1

datetime ×1

dictionary ×1

python ×1