我有一个关于向 python 添加项目路径的问题,以促进import
工作。
当我写在Python代码,我通常会添加必要的路径sys.path
使用
import sys
sys.path.append("/path/to/dir/") # almost every `.py` need this
Run Code Online (Sandbox Code Playgroud)
有时,当我的项目变得更大并包含多个目录时,这种方法看起来很笨重且容易出错(尤其是当我重新组织文件时)
最近,我开始使用 bash 脚本(位于项目根目录),将sys.path.append
with project root 参数添加到项目中的.py
文件中。使用这种方法,我几乎不必手动关心导入模块。
我的问题是:这是一个好的做法吗?与我的旧方法相比,我觉得这对我自己很方便,但是由于 bash 脚本是一个单独的文件,我需要 2 个命令来运行我的项目中的任何脚本(一个用于 bash,一个用于.py
. 我可以包含调用.py
bash的命令,但它远不如从终端直接调用它灵活。
真的很想听听大家的建议!提前致谢。任何建议将不胜感激!
我有一个包含值列表和列表的字典:
dict1={'first':['hi','nice'], 'second':['night','moon']}
list1= [ 'nice','moon','hi']
Run Code Online (Sandbox Code Playgroud)
我想将字典中的值与list1进行比较,如果每个键的值出现在列表中,则为键创建一个计数器:输出应该是这样的:
first 2
second 1
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
count = 0
for list_item in list1:
for dict_v in dict1.values():
if list_item.split() == dict_v:
count+= 1
print(dict.keys,count)
Run Code Online (Sandbox Code Playgroud)
任何帮助?提前致谢
我想使用JSON数据在Python中发出PUT请求
data = [{"$TestKey": 4},{"$TestKey": 5}]
Run Code Online (Sandbox Code Playgroud)
有什么办法吗?
import requests
import json
url = 'http://localhost:6061/data/'
data = '[{"$key": 8},{"$key": 7}]'
headers = {"Content-Type": "application/json"}
response = requests.put(url, data=json.dumps(data), headers=headers)
res = response.json()
print(res)
Run Code Online (Sandbox Code Playgroud)
得到这个错误
requests.exceptions.InvalidHeader: Value for header {data: [{'$key': 4}, {'$key': 5}]} must be of type str or bytes, not <class 'list'>
得到标题中提到的错误。下面提到的函数由通过POST api调用的另一个函数调用。
错误位于打印语句下方的行上。不知道错误的含义以及为什么会出现。用于一周前运行的相同代码。
def remove_individual_stops(ordered_parkstop_dict, relevant_data):
new_ordered_parkstop_dict = ordered_parkstop_dict
for key, value in ordered_parkstop_dict.items():
if len(value) == 0:
for k,v in ordered_parkstop_dict.items():
if key in v:
new_ordered_parkstop_dict.pop(key)
print (type(ordered_parkstop_dict), ordered_parkstop_dict)
for k,v in ordered_parkstop_dict.items():
klist = []
keylist = []
if value and v:
if len(v)==1 and len(value)==1:
klist.append(k), keylist.append(key)
if (keylist == v) and (klist == value and len(value) == 1):
new_ordered_parkstop_dict.pop(key)
return new_ordered_parkstop_dict
Run Code Online (Sandbox Code Playgroud) 我需要编写一个函数来接受代表每个人朋友的列表列表,并需要将其转换为字典.所以输入[['A','B'],['A','C'],['A','D'],['B','A'],['C','B'],['C','D'],['D','B'],['E']]
应该返回{A:[B,C,D],B:[A],C:[B,D],D:[B],E:None}
输入:
[['A','B'],['A','C'],['A','D'],['B','A'],['C','B'],['C','D'],['D','B'],['E']]
Run Code Online (Sandbox Code Playgroud)
预期产出:
{A:[B,C,D],B:[A],C:[B,D],D:[B],E:None}
Run Code Online (Sandbox Code Playgroud)
目前我正在尝试以下方法:
s=[['A','B'],['A','C'],['A','D'],['B','A'],['C','B'],['C','D'],['D','B'],['E']]
output=dict.fromkeys((set([x[0] for x in s])),[ ])
for x in s:
if len(x)>1:
output[x[0]].append(x[1])
else:
output[x[0]].append(None)
Run Code Online (Sandbox Code Playgroud)
但是输出给了我每个键的所有值,而不是只返回相应的值
我得到的输出是:
{
'A': ['B', 'C', 'D', 'A', 'B', 'D', 'B', None],
'B': ['B', 'C', 'D', 'A', 'B', 'D', 'B', None],
'C': ['B', 'C', 'D', 'A', 'B', 'D', 'B', None],
'D': ['B', 'C', 'D', 'A', 'B', 'D', 'B', None],
'E': ['B', 'C', 'D', 'A', 'B', 'D', 'B', None]
}
Run Code Online (Sandbox Code Playgroud) 1.000,1234
我正在Windows操作系统下的Python中寻找德语数字格式(例如)的正确方法。
我尝试过locale.setlocale
但没有成功。
相反,我编写了一个函数来提供所需的输出。
有没有更好的办法?
def ger_num(number, precision=3):
"""
returns german formatted number as string or an empty string
"""
if number is not None:
try:
my_number = "{:,f}".format(number)
except ValueError:
return ""
decimals, fraction = my_number.split(".")[0], my_number.split(".")[1]
decimals = decimals.replace(",", ".")
if precision:
return decimals + "," + fraction[:precision]
else:
return decimals
else:
return ""
Run Code Online (Sandbox Code Playgroud) 我想创建一个遍历包含列表的嵌套字典的函数。对于与关键字匹配的每个值,该函数将其替换为另一个关键字。
函数是否返回另一个字典或是否更改主字典并不重要。
我试图分开案例: - 如果数据是一个字典,做一些 - 如果数据是一个列表,做别的
字典:
data_dict = {
"name": "AAAAAA",
"content": "BBBBBB",
"dat": [
{
"author": {
"name": "CCCCCC",
"surname": "DDDDDD",
},
"title": "FFFFFF",
"color": 15258703,
"fields": [
{
"name": "GGGGGG",
"value": "HHHHHH",
},
{
"name": "IIIIII",
"value": "JJJJJJ",
}
],
"thumbnail": {
"url": "KKKKKK"
},
"image": {
"url": "LLLLLL"
},
"footer": {
"text": "MMMMMMM",
"icon_url": "NNNNNN"
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
现在我只是想改变每个值,看看我是否也在迭代。我可以打印所有data_dict
更改的值,但我无法在字典中管理它...
def recursive_replace_valuer(data, match, repl):
if isinstance(data, list):
for l in data:
recursive_replace_valuer(l, match, …
Run Code Online (Sandbox Code Playgroud) 我有以下元组列表
a = [(5, 2), (2, 4)]
Run Code Online (Sandbox Code Playgroud)
我需要输出以下文本
(5,2) (2,4)
Run Code Online (Sandbox Code Playgroud)
我试过了
[",".join(str(i) for i in j) for j in a]
Run Code Online (Sandbox Code Playgroud)
它提供以下列表
['5,3', '2,4']
Run Code Online (Sandbox Code Playgroud)
但是尚未找到获得所需输出的有效方法,它必须适用于不同大小的元组列表。
我有列表,其中每个条目代表一个嵌套结构,其中/
代表结构中的每个级别。
['a','a/b/a','a/b','a/b/d',....]
Run Code Online (Sandbox Code Playgroud)
我想获取这样一个列表并返回一个索引列表,其中每个级别按字母顺序排序。
如果我们有以下列表
['a','a/b','a/b/a','a/c','a/c/a','b']
Run Code Online (Sandbox Code Playgroud)
它代表嵌套结构
'a': #1
'b': #1.1
'a': ... #1.1.1
'c': #1.2
'a': ... #1.2.1
'b' : ... #2
Run Code Online (Sandbox Code Playgroud)
我正在尝试获取输出
['1','1.1','1.1.1', '1.2','1.2.1','2']
Run Code Online (Sandbox Code Playgroud)
但我对如何解决这个问题有真正的问题,它可以递归解决吗?或者对于每个级别由 分隔的任何通用列表,有什么方法可以解决这个问题/
?该列表原本不一定是排序的,并且每个级别可以是任何通用词。
我有一个接受回调的 API 方法。回调需要一个参数。
我希望此方法将第二个参数传递给接受它的回调。但是,我必须保持与仅接受原始参数的回调的兼容性。(事实上,我预计大多数用户不会关心附加参数,因此强迫他们明确忽略它会很烦人。)
我知道这可以使用 来完成inspect
。我想知道是否有一个“惯用”或常用的解决方案,但不是那么重量级。
python ×10
python-3.x ×7
dictionary ×3
json ×2
list ×2
algorithm ×1
bash ×1
coding-style ×1
http ×1
locale ×1
localization ×1
put ×1
python-3.3 ×1
recursion ×1