标签: dictionary-comprehension

python如何从列表中创建字典中的字典

我有一个文件名列表,examples = ['f1','f2','f3','f4'],一天中的时间,t = ['am','pm']以及收集的数据类型, [ '温度', '湿度'].

从这些我想以下列格式在字典中创建字典:

dict = {'f1': { am : {'temp': [], 'humidity': []} , pm : {'temp': [], 'humidity': []}},
        'f2': { am : {'temp': [], 'humidity': []} , pm : {'temp': [], 'humidity': []}},
        'f3': { am : {'temp': [], 'humidity': []} , pm : {'temp': [], 'humidity': []}},
        'f4': { am : {'temp': [], 'humidity': []} , pm : {'temp': [], 'humidity': []}}}
Run Code Online (Sandbox Code Playgroud)

最好的方法是什么?非常感谢先进.

python list dictionary-comprehension

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

将列表列表分解为词典

我有一个列表清单,s即查询Fruit上的数据库的结果,item[0]是水果的名称,是水果item[1]是否有种子,item[2]是否可以食用.

s = [['Apple','Yes','Edible'], ['Watermellon','Yes','Yes']]
Run Code Online (Sandbox Code Playgroud)

由于我的实际列表要大得多,我想要一种非常简单的方法来引用/返回这些值.例如,print my_dict['Apple']['Seeds']会屈服Yes

我认为我最好的选择是创建一个字典,但我正在寻找建议,如果这是一个好方法,以及如何做到这一点.

我开始编写一些代码,但我不确定如何获得第二组标题,所以我的示例使用索引代替.

my_dict =  {t[0]:t[1:] for t in s}

print my_dict['Apple'][0]
Run Code Online (Sandbox Code Playgroud)

python python-2.7 dictionary-comprehension

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

通过Dict理解创建一个包含列表值的字典?

让我说我有

a = [1,2,3,4,5]
Run Code Online (Sandbox Code Playgroud)

我正在尝试创建一个字典

dictObj = { (key,[]) for key in a}
Run Code Online (Sandbox Code Playgroud)

但我得到一个不可动的类型错误.这对我来说似乎很奇怪,因为如果值列表是正确的,那很好吗?我想知道是否有人能告诉我创建哈希表的正确语法,其中所有键都是a中的元素,每个键都指向一个空数组.

python dictionary python-3.x dictionary-comprehension

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

使用字典理解增加字典值

我正在尝试使用 dict 理解和 python 中的三元运算来执行以下表达式:

for num in ar:
     if num in seen_dict:
         seen_dict[num] += 1
     else:
         seen_dict[num] = 1
Run Code Online (Sandbox Code Playgroud)

我试过这个:

seen_dict = { num: seen_dict[num] += 1 for num in ar if num in seen_dict else seen_dict[num] = 1}
Run Code Online (Sandbox Code Playgroud)

及其几个排列,但我不断收到语法错误。可以做我想做的吗?

更新

这是正确的语法,但不是我的 dict 只返回 1: seen_dict = { num: (seen_dict[num] + 1) if num in seen_dict else 1 for num in ar }

有人可以解释为什么这与 for 循环的功能不同吗?谢谢你。

python ternary python-3.x dictionary-comprehension

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

将代码简化为字典理解

在一个目录images 中,图像被命名为 - 1_foo.png2_foo.png14_foo.png等。

图像经过 OCR 处理,文本提取物dict通过以下代码存储在 a中 -

data_dict = {}

for i in os.listdir(images):
    if str(i[1]) != '_':
        k = str(i[:2])  # Get first two characters of image name and use as 'key'
    else:
        k = str(i[:1])  # Get first character of image name and use 'key'
    # Intiates a list for each key and allows storing multiple entries
    data_dict.setdefault(k, [])
    data_dict[k].append(pytesseract.image_to_string(i))
Run Code Online (Sandbox Code Playgroud)

代码按预期执行。
图像的名称中可以有不同的数字,范围从 1 到 99。
这可以简化为dictionary …

python dictionary dictionary-comprehension

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

使用 Python 字典理解填充不同的字典

我想压缩这个语法以避免双重字典理解(我希望获得一些计算时间)

d1 = {loc:list(np.sum(data, 0)) for loc, data in dicos.items()}
d2 = {loc:np.nancumsum(list(np.sum(data, 0))) for loc, data in dicos.items()}
Run Code Online (Sandbox Code Playgroud)

我试过这个没有成功

d1,d2 = [{loc:list(np.sum(data, 0)),loc:np.nancumsum(list(np.sum(data, 0)))} \
         for loc, data in dicos.items()]
Run Code Online (Sandbox Code Playgroud)

python dictionary-comprehension

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

嵌套字典理解的执行顺序

我正在尝试转换此列表:

data = [{'A': 123}, {'B': 456}, {'C': 789}]
Run Code Online (Sandbox Code Playgroud)

到这本词典:

{'A': 123, 'B': 456, 'C': 789}
Run Code Online (Sandbox Code Playgroud)

通过使用字典理解:

{key: value for key, value in dictionary.items() for dictionary in data}
Run Code Online (Sandbox Code Playgroud)

例外:

NameError: name 'dictionary' is not defined
Run Code Online (Sandbox Code Playgroud)

python dictionary list dictionary-comprehension

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

Python 单语句字典生成器

Python 有没有办法做到

new_list = [x for x in items]
Run Code Online (Sandbox Code Playgroud)

(列表理解)字典?就像是

new_dict = [x=>y for x, y in items.iteritems()]
Run Code Online (Sandbox Code Playgroud)

这样我得到

{x: y}
Run Code Online (Sandbox Code Playgroud)

python dictionary dictionary-comprehension

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

使用条件语法从列表创建字典理解

我想用字典理解语法创建一个字典.

请注意,列表l包含字符串和元组的元组,第一个元素始终是时间戳.

这有效:

d = {}
for entry in l:
    if entry[0] not in d:
        d[entry[0]] = []
    d[entry[0]].append(entry)
Run Code Online (Sandbox Code Playgroud)

这不起作用:

d = {k[0].append(k) for k in l if k[0] in d else k[0]:k for k in l}
  File "<stdin>", line 1
    d = {k[0].append(k) for k in l if k[0] in d else k[0]:k for k in l}
                                                   ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

python dictionary dictionary-comprehension

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

创建“压缩”字典

我有一个 python 字典,我想根据键压缩成一个不同的字典:

{'field1_0': 'FieldName1', 'field2_0': 'DataType1', 
    'field1_1': 'FieldName 2', 'field2_1': 'DataType2'}
Run Code Online (Sandbox Code Playgroud)

在这篇文章中我的钥匙是自动表单字段名称和它们由后“提供的数字分组_ ”: field1_0field2_0进行分组并且field1_1field2_1由于尾号进行分组。

我想将这些分组元素组合起来,并将它们压缩成一个键值对的字典,其中分组项目的每个值都在新的字典中。

例如,以上面的字典为例。我想要一个看起来像这样的字典:

{'FieldName1': 'DataType1', 'FieldName2': 'DataType2'}
Run Code Online (Sandbox Code Playgroud)

对于我正在做的事情的上下文:我有一些动态 Django 表单,允许用户在我的项目中创建自定义报告。为此,我有 1 个表单,允许他们输入所需字段数的数字。提交此表单时,动态表单会根据输入的元素数量创建 2 个字段(1 个用于字段名称,1 个用于数据类型,即'field1_{x}': 'field name''field2_{x}':'datatype')。我将提交这个创建我们正在讨论的 dict 的提交,并将其传递到一个不同的动态表单中,该表单根据字段名称和数据类型创建字段,然后中提琴您有可以根据 3rd 方声明创建的自定义表单。

python dictionary dictionary-comprehension

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