我正在使用 Export-Excel,并且我正在使用的 psobject 属性集正在重新排序,这使得我的 Excel 标题顺序错误。
这是我的代码:
foreach ($errCode in $ErrCodes)
{
$resultHelp = [System.Collections.Generic.List[psobject]]::new()
Write-Host "another:"
$err = $errCode #get each error code to lookup in mdb file
Write-Host $err
$resultHelp = ProcessHelpMDB -mdbLookupError $errCode -mdbFilePath $basePathFull -mdbDeviceSeries $Ver #######
$result = [ordered] @{
"ScreenNumber" = ""
"KKey" = ""
"EnglishUS" = ""
"PictureID" = ""
"ImageFound" =""
"ImageFileName" = ""
} #this didn't do anything
#loop thru results from Help MDB file for $errCode
###this loses order:
$result …Run Code Online (Sandbox Code Playgroud) 我想在我的方法中返回一个OrderedDictionary,但是我的代码出错...
我不知道为什么我不能这样做:
public OrderedDictionary getAllPortsInformations()
{
OrderedDictionary SerialPort = filtreXml("/catalog/cd/SerialPort", "SerialPort");
OrderedDictionary BaudRate = filtreXml("/catalog/cd/BaudRate", "BaudRate");
OrderedDictionary DataBits = filtreXml("/catalog/cd/DataBits", "DataBits");
OrderedDictionary StopBits = filtreXml("/catalog/cd/StopBits", "StopBits");
OrderedDictionary ParityBits = filtreXml("/catalog/cd/ParityBits", "ParityBits");
OrderedDictionary ReadTimeout = filtreXml("/catalog/cd/ReadTimeout", "ReadTimeout");
OrderedDictionary WriteTimeout = filtreXml("/catalog/cd/WriteTimeout", "WriteTimeout");
OrderedDictionary PinCode = filtreXml("/catalog/cd/PinCode", "PinCode");
OrderedDictionary output = new OrderedDictionary();
foreach (DictionaryEntry sp in SerialPort)
output.Add(sp.Key, sp.Value);
foreach (DictionaryEntry br in BaudRate)
output.Add(br.Key, br.Value);
foreach (DictionaryEntry db in DataBits)
output.Add(db.Key, db.Value);
foreach (DictionaryEntry sb in StopBits)
output.Add(sb.Key, sb.Value);
foreach …Run Code Online (Sandbox Code Playgroud) 如何OrderedDict在保留相同顺序的同时将转换为普通字典?
我问这个的原因是因为当我从API获取数据时,我得到一个JSON字符串,我用它json.loads(str)来返回一个字典.返回的这个字典json.loads(...)只是乱序,随机排序.另外,我读过这个OrderedDict工作很慢,所以我想使用与原始JSON字符串相同顺序的常规字典.
稍微偏离主题:无论如何都要将JSON字符串转换为dict,json.loads(...)同时保持相同的顺序而不使用collections.OrderedDict?
我有一个OrderedDictionary d充满字符串的键(+ 对象作为值)。我需要将字典键复制到HashSet<string> hs.
我现在这样做:
OrderedDictionary d = new OrderedDictionary();
// ... filling d ...
HashSet<string> hs = new HashSet<string>();
foreach (string item in d.Keys)
hs.Add(item);
Run Code Online (Sandbox Code Playgroud)
我知道有.CopyTo()字典的方法来填充字符串数组。有没有更优雅的方法将密钥也复制到 a HashSet?
更新:似乎建议new HashSet<string>(d.Keys.Cast<string>());不适用于OrderedDictionary. 编译器(VS2019 Community Ed.)说...
错误 CS1929“ICollection”不包含“Cast”的定义,并且最佳扩展方法重载“EnumerableRowCollectionExtensions.Cast(EnumerableRowCollection)”需要“EnumerableRowCollection”类型的接收器
更新 2:上述更新在using System.Linq;添加时起作用。
是否有可能使默认的dict文字创建有序的dicts而不是无序的?
我想键入复杂的嵌套配置,如:
config = {
'train': {
'speed': 0.001,
'initial_values': [1, 2, 3]
},
'model': {
...
}
}
Run Code Online (Sandbox Code Playgroud)
并且想要写一堆括号
config = OrderedDict([(
'train', OrderedDict([(
'speed', 0.001), (
'initial_values', [1, 2, 3])]),(
'model', OrderedDict([(
...
Run Code Online (Sandbox Code Playgroud)
绝对是无法解决的.
关于为什么我的愿望不好,请不要有哲学.
好的,目前我会写一些像:
def od(*args):
return OrderedDict([(args[i], args[i+1]) for i in range(0, len(args), 2)])
config = od(
'train', od(
'speed', 0.001,
'initial_values', [1, 2, 3]
),
'model', od(
...
)
)
Run Code Online (Sandbox Code Playgroud)